《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!


问题描述

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)

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


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.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决_v8_02

保存中文名图片: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格式编码。
运行后可以正常保存。


好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!