Ola*_*lad 1 python opencv image-processing opencv3.0
我的代码中有问题,找不到适合的解决方案。我正在使用Python 2.7.10和OpenCV 3.0。我读取了两张图像,并希望将其中一张图片(模板)与另一张图片的轮廓进行匹配,但是出现以下错误:
error: (-215) count >= 0 && (depth == CV_32F || depth == CV_32S) in function cv::arcLength
Run Code Online (Sandbox Code Playgroud)
我的代码如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
灰度图像和比较图像均为灰度图像。该错误显然是在说我需要数组为浮点数或双精度数,但我不知道如何在python中进行转换,并且发现了许多函数正常工作的示例,并且代码似乎几乎相同。
此外,在大多数应用程序中,我注意到在大多数示例中,findContours()函数返回2个值,但如果不给出3则出现错误。
请帮我找到问题!
该错误实际上意味着您的图像是32位浮点数,而不是整数。特别是8位无符号整数。我相信,这对应于OpenCV理解的灰度图像。您可以具有其他类型的基础数字类型,并且它仍将在查看器中以灰度模式显示,但要了解您使用的查看器将对其进行缩放(安静)以显示它。
我可以建议您尝试的是:
gray_image = cv2.convertScaleAbs(img)
Run Code Online (Sandbox Code Playgroud)
不知道返回的东西是怎么回事。
我也很抱歉,我误读了您要的是cv2,而您要的是cv3。我认为应该足够相似,请给我一些时间进行检查。
OpenCV3的语法有点不同,例如berak: opencv 3 beta / python中的findContours和drawContours错误
Run Code Online (Sandbox Code Playgroud)cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) ? image, contours, hierarchy
| 归档时间: |
|
| 查看次数: |
5969 次 |
| 最近记录: |