gpt4 book ai didi

python - 带有 arcLength 的 Python 错误的 OpenCV

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:35 25 4
gpt4 key购买 nike

我的代码有问题,找不到合适的解决方案。我正在使用 Python 2.7.10 和 OpenCV 3.0。我读了两张图片,想将其中一张图片(模板)与另一张图片的轮廓相匹配,但出现以下错误:

error: (-215) count >= 0 && (depth == CV_32F || depth == CV_32S) in function cv::arcLength

我的代码是这样的:

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray, 11, 10, 17)
edges = cv2.Canny(gray, 100, 20)

contours,hierarchy, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
ret = cv2.matchShapes(c, compare, 1, 0.0)
if ret < 0.5:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)

灰度图像和比较图像都是灰度图像。错误显然是说我需要我的数组是 float 或 double,但我不知道如何在 python 中转换它,我发现了很多函数工作的例子,代码看起来几乎相同。

此外,在大多数应用程序中,我注意到在大多数示例中,findContours() 函数返回 2 个值,但如果我不返回 3 个值,则会出现错误。

请帮我找出问题所在!

最佳答案

该错误实际上意味着您的图像是 32 位 float 而不是整数。特别是 8 位无符号整数。我相信,这对应于 OpenCV 理解的灰度图像。您可以有其他类型的基础数字类型,它仍然会在查看器中以灰度模式显示,但请理解您使用的查看器会(安静地)重新缩放以显示它。

我可以推荐你尝试的是:

gray_image = cv2.convertScaleAbs(img)

不确定返回的东西是怎么回事。

另外,我很抱歉,我误读了您要求的是 cv2 而您要求的是 cv3。我觉得应该差不多吧,给我点时间看看。

编辑

OpenCV3 的语法与 berak 在这个问题中的回答有些不同: findContours and drawContours errors in opencv 3 beta/python

opencv 3 has a slightly changed syntax here, the return values differ:

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → image, contours, hierarchy

关于python - 带有 arcLength 的 Python 错误的 OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33067821/

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