我使用OpenCV(Canny + findCountours)来查找对象的外部轮廓。绘制的曲线通常几乎但不是完全封闭。我想关闭它 - 找到它所在的区域。在OpenCV中关闭轮廓曲线
我该怎么做?
的事情考虑:
- 扩张 - 我坎尼后看到显示这个例子,虽然它似乎对我来说更有意义findContours
- 凸包后,要做到这一点 - 可能会奏效,虽然我真的想完成一个曲线
- 形状简单化 - 有关,但不正是我想要
我使用OpenCV(Canny + findCountours)来查找对象的外部轮廓。绘制的曲线通常几乎但不是完全封闭。我想关闭它 - 找到它所在的区域。在OpenCV中关闭轮廓曲线
我该怎么做?
的事情考虑:
有点晚,但我不得不处理这个自己。如果在Canny边缘检测之前执行开启操作(侵蚀之后扩张),则检测到的边缘应该更连续,从而获得更好的轮廓。这种方法看起来相当健壮。我在another post中提到过这个问题,并在a recent question上发布了代码示例。
使用折线方法画出轮廓
cv2.PolyLine(img, points, is_closed=True, 255, thickness=1, lineType=8, shift=0)
阅读文档了解更多细节:http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html
马克回答,如果它解决您的问题。如果没有,然后让我知道。
[approxPoly](http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#approxpolydp)在findContours()上提供此功能 – berak
只需复制轮廓列表的第一个元素结束? –
MartinBeckett,berak,我认为这两个评论都应该是答案, –