此篇文章首发于我的csdn博客,见原文链接。
使用cv2读取图片是常见的事情,但如果,输出图片形状大小时出现报错“ 'NoneType' object has no attribute shape”,后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取。下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推。
使用PIL读取图像,能够成功读取图片,借此了解图片的大小和格式,代码如下图所示:
cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,opencv中opencv不接受non-ascii的路径,解决方法就是先用先用np.fromfile()
读取为np.uint8
格式,再使用cv2.imdecode()
解码,如下:
np.fromfile(filename, dtype)是从以dtype形式读取文件
cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像