Wie finde ich die Ecken eines Rect-Objekts in openCV?

8

Ich verwende die openCV-Bibliothek auf der Android-Plattform. Ich habe erfolgreich das größte Rechteck aus dem Bild erkannt, aber da meine Anwendung für den Scan-Zweck verwendet wird, möchte ich, dass die Perspektive auch die Funktionalität ändert.

Ich weiß, wie man perspectiveTransform und warpPerspectiveTransform anwendet, aber dafür brauche ich Ecken des Rechtecks ​​für die Quellpunkte.

Es scheint sehr einfach zu sein, die Ecken zu finden, da wir die Koordinaten der ersten Ecke (Oben-links) und die Breite / Höhe des Rect-Objekts haben, aber das Problem besteht für ein gedrehtes Rechteck (gewöhnliche Begrenzungen, aber Seiten) (nicht parallel zur Achse), diese Werte sind sehr unterschiedlich. In diesem Fall speichert es die Werte, die einem anderen Rechteck entsprechen, dessen Seiten parallel zur Achse sind und das gedrehte Rechteck abdecken, so dass ich keine Ecken des tatsächlichen Rechtecks ​​erkennen kann >

Ich möchte auch einen Vergleich zwischen diesen beiden Algorithmen für die Erkennung eines Blattes aus dem Bild machen.

  1. Canny Kante - & gt; Größte Kontur - & gt; größtes Rechteck - & gt; finde Ecken - & gt; Perspektivwechsel

  2. Canny Rand- & gt; Hough Linien - & gt; Schnittpunkt der Linien - & gt; Perspektivwechsel

Das Ding, das ich fragen möchte, wird gegeben, wenn wir ein Rect-Objekt haben, wie man alle Ecken dieses Rechtecks ​​bekommt?

Vielen Dank im Voraus.

    
Ankur Gautam 13.01.2014, 04:50
quelle

2 Antworten

11

Ich bin sehr gespannt auf meine Frage! Es war einfach, aber es passiert, wenn Sie gerade mit etwas anfangen, mit nicht so relevanten Dokumentation.

Ich habe versucht, die Ecken eines allgemeinen Rechtecks ​​zu bekommen, das in der Implementierung von openCV nicht definiert war und daher fast unmöglich war.

Ich folgte dem Standard-Code auf stackoverflow für die größte Square-Erkennung. und Ecken können leicht mit dem approxCurve selbst herausgefunden werden.

// Konvertiere das Bild in Schwarz-Weiß

%Vor%

und die für die perspektivische Transformation verwendete Funktion ist unten angegeben:

%Vor%     
Ankur Gautam 13.01.2014, 07:14
quelle
2
%Vor%     
michaeltang 13.01.2014 05:29
quelle