cv.imdecode和cv.imencode

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cv.imdecode和cv.imencode相关的知识,希望对你有一定的参考价值。


 

使用cv2读取图片时,输出图片形状大小时出现报错“ NoneType object has no attribute shape”,后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取。下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推。

cv.imdecode和cv.imencode_解决方法

使用PIL读取图像,能够成功读取图片,借此了解图片的大小和格式,代码如下图所示:

cv.imdecode和cv.imencode_解决方法_02

cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,opencv中opencv不接受non-ascii的路径,解决方法就是先用先用np.fromfile()读取为np.uint8格式,再使用cv2.imdecode()解码,如下:

 

cv.imdecode和cv.imencode_文件名_03

np.fromfile(filename, dtype)是从以dtype形式读取文件

cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像
 

完整的读写代码:

input_path = "E:\\\\pic\\\\大大w1.png"
out_path = "D:\\\\大大w1.png"
img = cv2.imdecode(np.fromfile(input_path, dtype=np.uint8),-1)#输入含中文或者文件名含中文时
cv2.imencode(.jpg, img)[1].tofile(out_path)#输出含中文或者文件名含中文时,另外.jpg参数不影响使用png的图片

 

以上是关于cv.imdecode和cv.imencode的主要内容,如果未能解决你的问题,请参考以下文章

opencv python图片编码解码

2021-09-26学习内容

Python-opencv打开保存图片含有中文路径的问题

Python-opencv打开保存图片含有中文路径的问题

Python-opencv打开保存图片含有中文路径的问题

Python-opencv打开保存图片含有中文路径的问题