【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决

简介: 【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决


问题描述

1.使用opencv中的cv2.imread读取中文名称图片报错:

[ WARN:0@0.028] global loadsave.cpp:248 cv::findDecoder imread_(‘邓紫棋.jpg’): can’t open/read file: check file path/integrity

Traceback (most recent call last):

File “D:\MyTest\TestFiles\test1.py”, line 6, in

cv2.imshow(‘test’,img)

cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:971: error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’

运行代码如下:

# coding:utf-8
import cv2
img = cv2.imread('邓紫棋.jpg')
cv2.imshow('test',img)
cv2.waitKey(0)

2.使用opencv中的cv2.imwrite无法保存中文名称图片

cv2.imwrite('邓紫棋2.jpg',img) # 运行后,没有显示保存文件,也没有报错

运行代码后,没有保存图片文件,也没有报错。

解决办法:使用cv2.imdecode与cv2.imencode

读取中文名图片:cv2.imdecode

使用cv2.imdecode进行图片读取,代码如下:

# coding:utf-8
import cv2
import numpy as np
# img = cv2.imread('邓紫棋.jpg')
img = cv2.imdecode(np.fromfile('邓紫棋.jpg', dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imshow('test',img)
cv2.waitKey(0)

运行后可以正常显示:

保存中文名图片:cv2.imencode

# coding:utf-8
import cv2
import numpy as np
# img = cv2.imread('邓紫棋.jpg')
img = cv2.imdecode(np.fromfile('邓紫棋.jpg', dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imencode('.jpg',img)[1].tofile('邓紫棋2.jpg')

其中:'.jpg’表示把当前图片img按照jpg格式编码。

运行后可以正常保存。

目录
打赏
0
1
1
1
128
分享
相关文章
|
8月前
GDAL创建JPG或PNG格式图像
GDAL创建JPG或PNG格式图像
167 0
RGB数据剪切后保存为JPG格式文件的代码(使用jpeglib)
RGB数据剪切后保存为JPG格式文件的代码(使用jpeglib)
180 0
CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)