2014-01-30 151 views
12

我使用OpenCV(Canny + findCountours)來查找對象的外部輪廓。繪製的曲線通常幾乎但不是完全封閉。我想關閉它 - 找到它所在的區域。在OpenCV中關閉輪廓曲線

我該怎麼做?

的事情考慮:

  • 擴張 - 我坎尼後看到顯示這個例子,雖然它似乎對我來說更有意義findContours
  • 凸包後,要做到這一點 - 可能會奏效,雖然我真的想完成一個曲線
  • 形狀簡單化 - 有關,但不正是我想要
+5

[approxPoly](http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#approxpolydp)在findContours()上提供此功能 – berak

+7

只需複製輪廓列表的第一個元素結束? –

+0

MartinBeckett,berak,我認爲這兩個評論都應該是答案, –

回答

0

有點晚,但我不得不處理這個自己。如果在Canny邊緣檢測之前執行開啓操作(侵蝕之後擴張),則檢測到的邊緣應該更連續,從而獲得更好的輪廓。這種方法看起來相當健壯。我在another post中提到過這個問題,並在a recent question上發佈了代碼示例。