【发布时间】:2017-03-02 22:52:27
【问题描述】:
我偶然发现并解决了这个 dtype 问题,希望对某些人有所帮助。
通常我们会像这样转换颜色,这很有效:
img = cv2.imread("img.jpg"), 0)
imgColor=cv2.cvtColor(img , cv2.COLOR_GRAY2BGR)
但有时您可以先对图像进行标准化:
img = cv2.imread("img.jpg"), 0)/255.
imgColor=cv2.cvtColor(img , cv2.COLOR_GRAY2BGR)
会导致这个错误:
错误:(-215) 深度 == CV_8U ||深度 == CV_16U || depth == CV_32F in function >cv::cvtColor
重点是,在前一个例子中,dtype 是 uint8,而在后一个例子中是 float64。 要更正此问题,请添加一行:
img = cv2.imread("img.jpg"), 0)/255.
img=img.astype(numpy.float32)
imgColor=cv2.cvtColor(img , cv2.COLOR_GRAY2BGR)
【问题讨论】:
-
这是一个特定于
numpy除法行为的问题,而不是 OpenCV。