如何解决此错误?
import matplotlib, cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('C:/Users/xxx/Desktop/image.jpg')
img = np.array(img, dtype=np.uint8)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_GRAY2RGB))
错误:OpenCV(4.0.0) c:\ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ color.hpp:259: 错误:函数'__cdecl中的(-2:未指定错误) cv :: CvtHelper,结构cv :: Set <3,4,-1>,结构 cv :: Set <0,2,5>,2> :: CvtHelper(const class cv :: _ InputArray&,const class cv :: _ OutputArray&,int)'
输入图像中无效的通道数: 'VScn :: contains(scn)' 哪里 “ scn”是3
答案 0 :(得分:1)
img = cv2.imread(filename[, flags])
当标志> 0时返回三通道彩色图像
当flag = 0时返回灰色图像
以原始加载的文件的形式返回图像。
出现错误是因为您没有分配它以返回灰色图像。频道号不匹配。
使用img = cv2.imread(filename, 0)
确保img
是1通道图像。
答案 1 :(得分:0)
您用imread
加载的图像包含三个BGR格式的通道。但是,cv2.cvtColor
期望图像只有一个一个通道,因为您传递了参数cv2.COLOR_GRAY2RGB
(灰度图像只有一个通道)
如果您需要RGB,请考虑使用:
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)