繁体   English   中英

opencv python:不支持mat数据类型= 17

[英]opencv python: mat data type = 17 is not supported

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

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

谢谢

您的图像是CV_8S图像(8 位有符号整数)。 该站点显示了从数字数据类型到实际类型的转换,类型 17 对应于 8 位有符号整数。 这是问题,因为cvtColor()不接受 8 位带符号的 int 图像作为输入。 cvtColor()上的文档:

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

因此,您的输入图像需要是CV_8U ( numpy.uint8 ) 或CV_16U ( numpy.uint16 ) 或CV_32F ( numpy.float32 ) 类型,并具有正确数量的通道以用于您正在使用的颜色转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM