使用openCV

时间:2016-06-13 08:53:19

标签: python opencv contour

我在图像上应用了一个canny边缘检测,结果我得到了这个图像:

enter image description here

我得到了这个坐标,使用:

ans = []
for y in range(0, edges.shape[0]):
    for x in range(0, edges.shape[1]):
        if edge[y, x] != 0:
            ans = ans + [[x, y]]
ans = np.array(ans)

但我想只是这个形状的轮廓而不是里面的东西。有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

你应该尝试在轮廓中使用层次来定义哪个是父项,哪个是孩子,然后你可以在层次内部进行操作并仅绘制父轮廓(或最外面的轮廓)。

例如,看看这张图片

enter image description here

轮廓0,1,2是最外面的轮廓,或者我们也可以说层次结构-0,然后是轮廓2a,它是层次结构-1,然后是轮廓3,它是层次结构-2,依此类推。

从这里,您可以确定应该保持层次结构的深度。

如需进一步参考,您可以查看OpenCV文档here