【已解决】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格式编码。

运行后可以正常保存。

相关文章
|
10月前
|
计算机视觉
StretchDIBits 直接使用cv::Mat的数据有可能显示错误的问题
StretchDIBits 直接使用cv::Mat的数据有可能显示错误的问题
|
缓存 计算机视觉 数据格式
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决)
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决
|
6天前
GDAL创建JPG或PNG格式图像
GDAL创建JPG或PNG格式图像
11 0
|
3月前
|
存储 计算机视觉
OpenCV(三):Mat类数据的读取
OpenCV(三):Mat类数据的读取
120 0
|
计算机视觉
将TIF图像格式转化为PNG或者JPG格式
安装好cv2库,如果没有安装,请使用pip install opencv-python进行安装。
194 0
|
图形学
Qt&Vtk-003-读取jpg、png、dicom等格式图片
本文其实才能算是真正的Qt与Vtk结合,具体实现JPG、PNG、TIFF、DICOM、BMP及一个3D Cube显示。
635 1
Qt&Vtk-003-读取jpg、png、dicom等格式图片
|
编解码 计算机视觉
OpenCv-cv2.imshow()显示图片不全
OpenCv-cv2.imshow()显示图片不全
341 0
|
编解码 算法 计算机视觉
【CV】PIL.Image.save() 保存图片压缩问题
PIL.Image.save() 保存图片压缩问题
|
机器学习/深度学习 计算机视觉
Opencv,imread()读取BGR格式文件转换与RGB格式的相互转换
Opencv,imread()读取BGR格式文件转换与RGB格式的相互转换
|
数据采集 机器学习/深度学习 算法
CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)