gpt4 book ai didi

python - opencv cvtColor dtype问题(错误: (-215) )

转载 作者:太空狗 更新时间:2023-10-29 18:06:27 26 4
gpt4 key购买 nike

我偶然发现并解决了这个 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)

它会导致这个错误:

error: (-215) depth == CV_8U || depth == 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)

最佳答案

所以这将是一个已解决的类似问题,但与另一个函数 cv2.drawKeypoints() 有关。

这会起作用:

img = cv2.imread("img.jpg"), 1)
img_out = numpy.copy(img)
image_out = cv2.drawKeypoints(img,keypointList,img_out,(255,0,0),4)

但是,这不会编译:

img = cv2.imread("img.jpg"), 1)/255.0 
img_out = numpy.copy(img)
image_out = cv2.drawKeypoints(img,keypointList,img_out,(255,0,0),4)

这里我们有这个错误:

error: (-5) Incorrect type of input image.

同样,除以 255 或任何其他导致转换为 float 的“img”处理将使“img”不是 drawKeypoints 的正确类型。这里添加 img = img.astype(numpy.float32) 没有帮助。对于输入图像 img,事实证明 uint8 有效,但 float32 无效。我在文档中找不到这样的要求。令人困惑的是,与上述与 cvtColor 相关的问题不同,它提示“类型”。

所以让它工作:

img = cv2.imread("img.jpg"), 1)/255.0 
img_out = numpy.copy(img)
img=img.astype(numpy.uint8)
image_out = cv2.drawKeypoints(img,keypointList,img_out,(255,0,0),4)

对于最后一行,我认为 cv2.DRAW_RICH_KEYPOINTS 可以用作标志(drawKeyPoints 函数中的最后一个参数)。但是只有当我使用数字 4 时它才有效。任何解释将不胜感激。

关于python - opencv cvtColor dtype问题(错误: (-215) ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com