opencv python:不支持mat data type = 17

时间:2017-08-13 00:25:19

标签: python opencv

我只是想在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)

这些都是正在解释的所有行,以及与我面临的问题相关的唯一行。有人知道我做错了什么吗?

由于

1 个答案:

答案 0 :(得分:0)

您的图片是CV_8S图片(8位有符号整数)。 This site显示从数值数据类型到实际类型的转换,类型17对应于8位signed int。这是问题,因为cvtColor()不接受输入的8位有符号int图像。来自cvtColor()上的文档:

  

src - 输入图像:8位无符号,16位无符号(CV_16UC...)或单精度浮点。

因此,您的输入图片必须是CV_8Unumpy.uint8)或CV_16Unumpy.uint16)或CV_32Fnumpy.float32)类型使用适当数量的通道进行颜色转换。