Python - 解决cv2. imread、imwrite无法读取或保存中文路径图片问题
1,问题描述
(1)当使用 cv2.imread 读取路径中包含中文的图片时(包括文件名含有中文),虽然程序不会报错,但实际上什么也没读入。

(2)同样的如果 cv2.imwrite 存储带有中文路径图片,会发现图片无法成功生成,虽然程序同样也不会报错。
2,问题原因
因为 python 3.x 将系统字符编码默认为了 Unicode,而 opencv 读写图片函数的输入参数默认用 gbk 格式处理。
3,解决办法
(1)读取图片可以先用 np.fromfile() 读取为 np.uint8 格式,再使用 cv2.imdecode() 解码:
import cv2 import numpy as np filepath = r'G:\工作\测试图片\g3.png' img = cv2.imdecode(np.fromfile(filepath, dtype=np.uint8), cv2.IMREAD_COLOR)
(2)写图片可以使用 cv2.imencode 方法:
cv2.imencode('.jpg', img)[1].tofile(r'G:\工作\测试图片\g3.jpg')