Ich muss ein rechteckiges Objekt aus einem Graustufenbild extrahieren. Ich bin mit Thresholding rechteckiger Maske zu extrahieren, wie untenKorrektur der rechteckigen Maske für jede Neigung mit opencv
Manchmal ist das rechteckige Objekt gezeigt Verkippungen kann wie oben gezeigt. Im nächsten Schritt, ich habe die Form eines rechteckigen Objekts korrigieren folgende Ausgabe (grob)
Im Moment zu bekommen, ich bin mit verwandeln Hough Linie die Linie am nächsten zum Bildrand finden (dh links die meiste Linie vertikale Linie). Ich erhalte den Winkel der Linie und benutze diesen Winkel, um die Rotationsmatrix zu erhalten und warpAffine für das gesamte Bild auszuführen (mit opencv-Funktionen).
Vertikale Linienerfassung in der Nähe von Bildrand
I den folgenden Code verwenden in Python
# get the rotation matrix
myRotMatrix = cv2.getRotationMatrix2D((inBinaryImage.shape[1]/2,inBinaryImage.shape[0]/2),-myAngle,1)
# perform warpAffine to avoid issues
myBinaryImageTemp = cv2.warpAffine(inBinaryImage,myRotMatrix,(myNewWidth,myNewHeight))
Wie Sie können sehen, dass das affine korrigierte Objekt oben und unten noch etwas geneigt ist. Gibt es eine einfache Möglichkeit, auch die Neigung von oben/unten zu entfernen ??
Dank
Ihr Problem ist, dass das Rechteck selbst nicht ein Rechteck ist, es ist ein Parrellogramm. Seine Seiten sind zwar parallel, besitzen aber keinen rechten Winkel. Der Code funktioniert in diesen Fällen richtig, wenn er den richtigen Betrag rotiert, aber die Ecken der "Form", die mit dieser Linie verbunden sind, sind ungefähr 108 Grad und 80 Grad für die untere und obere Ecke. (Dies ist, was zu Ihrer Neigung führt.) –
gibt es eine Möglichkeit, es kann behoben werden ?? – user1388142