我只是想在python中使用opencv将图像从BGR转换为RGB。 但是,这样做时我收到此错误消息:
line 62, in getRep\n rgbImg = cv2.cvtColor(imgFrame,
cv2.COLOR_BGR2RGB)\nTypeError: src data type = 17 is not supported\n
我看到图像作为参数传递,它按照我的预期在BGR中,但它不起作用:
def getRep(self, imgFrame, multiple=False):
bgrImg = imgFrame.copy()
cv2.imshow('debug', imgFrame) #this line does show a BGR image
cv2.waitKey(0)
rgbImg = cv2.cvtColor(imgFrame, cv2.COLOR_BGR2RGB)
def recognize(self, imgFramePath):
imgFrame= cv2.imread(imgFramePath)
imgFrame = np.array(imgFrame)
reps = self.getRep(imgFrame, False)
这些都是正在解释的所有行,以及与我面临的问题相关的唯一行。有人知道我做错了什么吗?
由于
答案 0 :(得分:0)
您的图片是CV_8S
图片(8位有符号整数)。 This site显示从数值数据类型到实际类型的转换,类型17对应于8位signed int。这是问题,因为cvtColor()
不接受输入的8位有符号int图像。来自cvtColor()
上的文档:
src - 输入图像:8位无符号,16位无符号(
CV_16UC...
)或单精度浮点。
因此,您的输入图片必须是CV_8U
(numpy.uint8
)或CV_16U
(numpy.uint16
)或CV_32F
(numpy.float32
)类型使用适当数量的通道进行颜色转换。