我在图像上应用了一个canny边缘检测,结果我得到了这个图像:
我得到了这个坐标,使用:
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)
但我想只是这个形状的轮廓而不是里面的东西。有什么想法吗?
非常感谢!
答案 0 :(得分:2)
你应该尝试在轮廓中使用层次来定义哪个是父项,哪个是孩子,然后你可以在层次内部进行操作并仅绘制父轮廓(或最外面的轮廓)。
例如,看看这张图片
轮廓0,1,2是最外面的轮廓,或者我们也可以说层次结构-0,然后是轮廓2a,它是层次结构-1,然后是轮廓3,它是层次结构-2,依此类推。
从这里,您可以确定应该保持层次结构的深度。
如需进一步参考,您可以查看OpenCV文档here