(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
Traceback (most recent call last):
File "E:/project/cv_platform/monitor/mouse_el/copy_data.py", line 57, in <module>
gray_frame1 = cv2.cvtColor(cropImg1, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.0.0) D:\Build\OpenCV\opencv-4.0.0\modules\imgproc\src\color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
原因:就是图片为空,再对为空的图片进行别的操作,就会报错,下面模拟一种情况:
import cv2
img=cv2.imread("asdf.xxx")
gray_frame1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
原因有很多种,可能有一下几个原因:
1.图片路径错误,可能图片路径不存在
2.要写图片后缀名,比如img=cv2.imread("aaa.jpg"),img=cv2.imread("aaa.png")等等
3.图片中有中文路径
临时解决方法:加个为None判断,代码示例:
import cv2
img=cv2.imread("asdf.xxx")
if img is None:
print("img is none")
else:
gray_frame1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
如果图片路径或图片文件名中有中文,解决方法:
opencv c++是支持中文的,python不支持中文。
#读取图片
import cv2
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1)
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), -1) # 读入完整图片,见下面解释
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 0) # 读成灰度
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1) # 读成彩图