python 3以上版本cv2.imread读取中文路径下的图像为NONE

使用的程序中使用到了cv2.imread(),程序各种bug,将读取结果打印出来发现是None,然后主要找到了两种解决方法

#先介绍复杂一点的——暗度陈仓
可以使用MATLAB先读取图片生成.mat文件,再使用Python读取.mat文件传入数据。在这里要注意数据形式的改变,cv2.imread()读取出来为ndarray形式,而读取.mat文件后的数据为dict形式,所以需要进行格式转换。

#另一种是直面问题——刨根问底
cv2读取出图片后之所以为空,原因在于python 3将系统字符编码默认为了Unicode,而opencv 读取图片函数的输入参数默认用gbk格式处理,两种不同的编码方式造成了误会,只需要将程序稍微调整一点

cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)

在此仍要注意imdecode读取的是rgb格式,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)

以上应该可以较好的解决你的问题

你可能感兴趣的:(入所小白)