10

Ich habe ein Bild mit einem gleichschenkligen Dreieck und ein Rechteck:
equilateral triangle and a rectangle
Und ich mag nur 3 Ecke des Dreiecks erkennen. Ich folge dem OpenCV Harris corner detector tutorial Ich sehe, dass alle Eckpunkte des Dreiecks die Schwelle = 80 haben (wenn alle 4 Eckpunkte der Rechteckschwelle = 255 sind). Aber ich habe den Zusammenhang zwischen Schwelle und Grad nicht gefunden.Wie Ecke zu erkennen, mit bestimmtem Winkelgrad

Wie kann ich die Ecke finden, die beispielsweise im Bereich von [55,65] Grad liegt?
Hier ist die Ausgabe Mat http://pastebin.com/raw.php?i=qNidEAG0

P/s: Ich bin sehr neu in CV, hoffe, Sie können etwas mehr Details geben!

Antwort

9

Es scheint, dass ich eine mögliche Lösung gefunden habe. Ich habe es auf Mathematica implementiert und bin in der Lage, grundlegende Schritte zu erklären.

  1. Verwenden Sie den Operator "Ecken finden" und nehmen Sie die stärksten Ecken. Verwenden Sie den Harris-Operator. Corners
  2. Finden Sie Konturen (cv :: FindContours).

    Contours

  3. in jeder Kontur Für jede Ecke einen Kreis zeichnen und Schnittpunkt zwischen Kreis und Kontur finden. In OpenCV gibt es dafür keine Funktion und Sie sollten sie selbst implementieren.

    Intersections

  4. Jetzt für jede Ecke haben Sie Koordinaten von drei Punkten: Ecke, und zwei Punkte auf Seiten der Kontur. Es reicht Winkel zu bewerten dot product mit:

    angle estimation

Ergebnis:

Corners found

+0

Für den ersten Schritt, Sie meinen, ist die ganze lokale Maxima des Ergebnisses finden bilden * cv :: cornerHarris *? – nvcnvn

+0

Ja, Sie haben es richtig verstanden. – brotherofken

+0

Große Lösung! Ich denke, dass der einfachste Weg, Punkte von Kreuzungen in Punkt 3 zu finden, ist, Kreise auf leeres (leeres) Bild und die Verwendung & Operator auf diesem Bild und auf dem Bild von Konturen zu zeichnen. Das Ergebnis sollte alle Kreuzungspunkte sein. – cyriel