Python使用cv2读取图片时报错
A:OpenCV 库是在 C++ 写的,而在较早版本的 C++ 标准中并未提供直接的 Unicode 或者多字节字符编码支持。所以,OpenCV 在面对中文路径时,可能解析出现问题,因此最好使用 contains only ASCII 的字符路径。这个问题不只存在于Python中,其他使用 OpenCV 的语言,如 C++,也会遇到。一般使用的imread和imwrite文件路径是不能有中文的,但
前提
首先确保你已经正确安装了cv2模块,如果还没有安装,可以尝试使用 pip install opencv-python
命令在控制台进行安装。
错误信息:
cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:787: error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'
错误原因:
cv2读取图片时,图片的路径不能包含有中文或者空格,只能为英文或者数字否则报错!
解决办法:
一般使用的imread和imwrite文件路径是不能有中文的,但我们可以用其他方法代替。
1.读取包含中文路径下的图片的方法
# 将下面这句读取图片的代码替换掉
img = cv2.imread(file_path) # file_path是你的图片路径
# 替换成
img = cv2.imdecode(numpy.fromfile(file_path, dtype=numpy.uint8), -1) # 记得要 import numpy
2.将图片保存到包含中文路径下的方法
# 将下面的这句替换掉
cv2.imwrite(save_path, img)
# 可以替换成
cv2.imencode('.jpg', img)[1].tofile(file_path) # 英文或中文路径均适用
Q&A
Q:为什么 OpenCV 不支持中文路径?
A:OpenCV 库是在 C++ 写的,而在较早版本的 C++ 标准中并未提供直接的 Unicode 或者多字节字符编码支持。所以,OpenCV 在面对中文路径时,可能解析出现问题,因此最好使用 contains only ASCII 的字符路径。这个问题不只存在于Python中,其他使用 OpenCV 的语言,如 C++,也会遇到。
转自知乎大神Python使用cv2读取图片时报错:cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv- - 知乎 (zhihu.com)
更多推荐
所有评论(0)