Opencv中,imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) 报错:error:!_src.empty() in function ‘cv::cvtColor‘

Opencv,imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) 报错:error:!_src.empty() in function ‘cv::cvtColor’

熟练使用Ctrl+C和Ctrl+V大法后

import cv2
path=r"296059.png"
imag=cv2.imdecode(np.fromfile(path),-1)
imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) 

运行报错:cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’

此处:原因有很多种,可能有以下几个原因:

1.图片路径错误,可能图片路径不存在
2.要写图片后缀名
3.图片中有中文路径

如果排除以上原因,可以尝试以下方法:
解决方法1:
图像分为单通道和多通道
单通道图像,直接cv2.imread(path, 0)以单通道模式读。

import cv2
path=r"296059.png"
imag=cv2.imdecode(np.fromfile(path),-1)
imag=cv2.imread(path,0) 

解决方法2:
解决方案来源于(-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

#读取图片
import cv2
imag = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1)

imag = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), -1)  # 读入完整图片,见下面解释

imag = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 0)  # 读成灰度
 
imag = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1)  # 读成彩图

在cv2.imdecode中补充:dtype=np.uint8,
如下解决:

import cv2
path=r"296059.png"
imag=cv2.imdecode(np.fromfile(path,dtype=np.uint8),1)
imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY)

你可能感兴趣的:(图像处理常见问题,opencv,计算机视觉,python)