2024-10-06 15:20:07 发布
网友
我使用的是openCV 2.4.9版本,我所指的代码如下: im2,contours,hier=cv2.findContours(im_th.copy(),cv2.RETR_EXTERNAL,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
im2,contours,hier=cv2.findContours(im_th.copy(),cv2.RETR_EXTERNAL,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
我一直得到错误:“valuesRor:需要超过2个值才能解包” 我知道2.4.9版本的openCV中的findContour只返回两个值。但这些价值观是什么?
OpenCV文档包含返回类型的所有详细信息。也许你应该经历一次。See this了解层次结构。若要更正错误,请使用-
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
你现在使用的是OpenCV 3。
在这个函数的三参数版本中,它返回附加的“im2”参数。我将简要介绍轮廓和层次结构返回,因为它们有很好的文档记录。这两个返回值取决于传入的两个常量。它们是下面的变体。
等高线是点列表或点列表树。这些点描述了每一个轮廓,也就是说,一个矢量,可以根据它与背景的不同,围绕形状的各个部分绘制轮廓。
层次结构显示了形状之间的相互关系,如层-如果形状在彼此之上,这可以在这里确定。
位于https://docs.opencv.org/3.3.1/d4/d73/tutorial_py_contours_begin.html的文档表明im2是一个经过修改的图像。我对这个返回值感兴趣,因为文档并没有真正告诉我它的用途。
实际实验表明没有区别。 我的代码:
import cv2 im = cv2.imread('shapes_and_colors.jpg') imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) cv2.imwrite("gray.jpg", imgray) ret, thresh = cv2.threshold(imgray, 127, 255, 0) cv2.imwrite("thresh.jpg", thresh) im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cv2.imwrite("contour.jpg", im2)
形状和颜色是来自pyimagesearch的测试图像:
这将变为灰度来阈值:
然后我应用一个阈值,得到一个二进制图像:
最后,我运行findcontours-只需将“im2”参数写入图像:
没有明显的区别。也许一个复杂的图像差异算法可以找到一些我找不到的东西。我意识到这些是有损JPG的,这可能会混淆。 到目前为止,我看不出im2返回值有多大用处,但轮廓和层次结构绝对有用。
我会说,我本来希望看到类似于绘制轮廓的东西,但在二值图像中只有一个通道,所以即使它有,我也不相信我能看到它。在正常模式下,无法将其应用于32位图像。我也看到没有阈值的灰度图像没有明显的差异。
OpenCV文档包含返回类型的所有详细信息。也许你应该经历一次。See this了解层次结构。若要更正错误,请使用-
你现在使用的是OpenCV 3。
在这个函数的三参数版本中,它返回附加的“im2”参数。我将简要介绍轮廓和层次结构返回,因为它们有很好的文档记录。这两个返回值取决于传入的两个常量。它们是下面的变体。
等高线是点列表或点列表树。这些点描述了每一个轮廓,也就是说,一个矢量,可以根据它与背景的不同,围绕形状的各个部分绘制轮廓。
层次结构显示了形状之间的相互关系,如层-如果形状在彼此之上,这可以在这里确定。
实验im2返回值
位于https://docs.opencv.org/3.3.1/d4/d73/tutorial_py_contours_begin.html的文档表明im2是一个经过修改的图像。我对这个返回值感兴趣,因为文档并没有真正告诉我它的用途。
实际实验表明没有区别。 我的代码:
形状和颜色是来自pyimagesearch的测试图像:
这将变为灰度来阈值:
然后我应用一个阈值,得到一个二进制图像:
最后,我运行findcontours-只需将“im2”参数写入图像:
没有明显的区别。也许一个复杂的图像差异算法可以找到一些我找不到的东西。我意识到这些是有损JPG的,这可能会混淆。 到目前为止,我看不出im2返回值有多大用处,但轮廓和层次结构绝对有用。
我会说,我本来希望看到类似于绘制轮廓的东西,但在二值图像中只有一个通道,所以即使它有,我也不相信我能看到它。在正常模式下,无法将其应用于32位图像。我也看到没有阈值的灰度图像没有明显的差异。
相关问题 更多 >
编程相关推荐