Ich habe eine numpy Array, die aus einem Bild mit dem Harris Corner Erkennung Algorithmus von opencv extrahiert wurde und ich versuche, vier Punkte, die ähnelt zu sortieren Ein Rechteck.Wie (x, y) Punkte im Array zu vergleichen, um rechteckige Form in Python zu extrahieren
Hier finden Sie die Menge der Punkte:
numpy.array([[194, 438],
[495, 431],
[512, 519],
[490, 311],
[548, 28],
[407, 194],
[181, 698],
[169, 93],
[408, 99],
[221, 251],
[395, 692],
[574, 424],
[431, 785],
[538, 249],
[397, 615],
[306, 237]])
Was wäre die beste Methode, um die Punkte für die Winkel in den Quadranten innerhalb einer geringen Abweichung von 90 zusammen mit Vergleichen wie parallele Linien zwischen oberen und unteren Punkte vergleichen und linke und rechte Punkte sollen die vier bestmöglichen Kandidaten zurückgeben?
bearbeiten
Das Bild wird grob mit dem Rechteck ausgerichtet, so dass keine signifikante Rotation oder Verzerrung ist. Die Abweichungstoleranz für perspektivische Transformation und grobe Aufnahme kann ich denke, kann +/- 10 Grad sein
Unten ist ein Bild der geplotteten Linien mit x und y Standorten. Die gewünschten Ecken sind oben links (169,93), oben rechts (408,99), unten rechts (395,692) und unten links (181,698)
sind die Rechtecke "richtige" Rechtecke mit den Rändern des Bildschirms ausgerichtet oder sind sie gedreht oder verzerrt? –
auch das wird fast unmöglich zu beantworten, es sei denn, Sie sagen uns genau * Wie * Sie definieren Rechteck "Güte". Ist Parallelität wichtiger als 90-Grad-Winkel? Ist ein "Rechteck" mit einem perfekten 90 ° -Winkel und einem sehr schlechten Winkel besser als ein "Rechteck" mit zwei mittelmäßigen Winkeln? Wie viel? –
Warum quetschen Sie nicht die zusätzliche Dimension aus, dann machen Sie ein Streudiagramm in matplotlib, um eine Vorstellung davon zu bekommen, mit was Sie arbeiten –