2014-01-30 10 views
12

Ich benutze OpenCV (Canny + findCountours), um externe Konturen von Objekten zu finden. Die gezeichnete Kurve ist typischerweise fast, aber nicht vollständig geschlossen. Ich möchte es schließen - um die Region zu finden, die es begrenzt.Schließen einer Konturkurve in OpenCV

Wie mache ich das?

Dinge in Betracht gezogen:

  • Dilation - die Beispiele, die ich zeigen diese nach Canny gesehen habe, obwohl würde es mir scheinen es mehr Sinn, diese
  • Convex Rumpf nach findContours zu tun macht - funktionieren könnte, obwohl ich wirklich versucht, eine Kurve
  • Form Vereinfachung abzuschließen - verwandt, aber nicht genau das, was ich
  • wollen
+5

[approxPoly] (http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#approxpolydp) bietet diese Funktion über findContours() – berak

+7

Duplizieren Sie einfach das erste Element der Konturliste am Ende? –

+0

MartinBeckett, Berak, ich denke, beide Kommentare sollten Antworten gewesen sein, +1 für beide –

Antwort

0

ein wenig spät, aber ich hatte mich nur damit umgehen. Wenn Sie vor der Canny-Kantendetektion einen Öffnungsvorgang (Erosion gefolgt von Dilatation) durchführen, sollten die von Ihnen erfassten Kanten kontinuierlicher sein, was zu besseren Konturen führt. Diese Methode scheint ziemlich robust zu sein. Ich erwähnte dies in another post und veröffentlichte ein Codebeispiel als Teil von a recent question.