前提

首先确保你已经正确安装了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)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐