2017-08-13 67 views
1

我只是试图在Python中使用opencv将图像从BGR转换为RGB。 但是这样做,当我收到此错误信息:opencv python:mat数据类型= 17不支持

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

我无法复制您的问题。你可以添加imgFrame.dtype的输出吗? – Solvalou

回答

0

你的图像是CV_8S图像(8位有符号整数)。 This site显示从数字数据类型到实际类型的转换,类型17对应于8位有符号整数。这是因为cvtColor()不接受输入的8位带符号整形图像的问题。从文档上cvtColor()

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

所以,你输入的图像必须与你使用的颜色转换通道的适当数量CV_8U类型(numpy.uint8)或CV_16Unumpy.uint16)或CV_32Fnumpy.float32)的。