Der RotatedRect-Winkel von OpenCV liefert nicht genügend Informationen

7

Aus meinen Experimenten geht der Winkel, den die Winkelvariable RotatedRect zurückgibt, von -90 bis 0 Grad, was nicht ausreicht, um zu bestimmen, ob das Objekt nach links oder rechts geneigt ist.

Wenn der Winkel beispielsweise -45 Grad beträgt, können wir nicht sagen, ob wir +45 oder -45 Grad drehen müssen, um ihn zu entzerren.

Ein Auszug aus dem Code, den ich benutze:

%Vor%

Wenn man das Objekt in eine Richtung lehnt, erhält man Winkel von 0 bis -90 Grad, während ich das Objekt in die andere Richtung lehne und Winkel von -90 bis 0 Grad bekomme.

Wie kann ich den Winkel finden, um den ich mein Bild drehen sollte, um es zu entzerren?

    
João M. S. Silva 06.06.2014, 02:13
quelle

3 Antworten

13

Nachdem ich von Sebastian Schmitz und Michael Burdinov Antworten erhalten habe, habe ich es so gelöst:

%Vor%

Tatsächlich liefert der Winkel von RotatedRect nicht genug Informationen, um den Winkel eines Objekts zu kennen. Sie müssen auch RotatedRect's size.width und size.height verwenden.

    
João M. S. Silva 06.06.2014, 15:34
quelle
3

Das Umschalten von Breite und Höhe des Rechtecks ​​ist dasselbe wie das Drehen um 90 Grad. Wenn der Winkelbereich also 180 statt 90 wäre, hätte das Rechteck 2 Darstellungen (Breite, Höhe, Winkel) und (Höhe, Breite, Winkel + 90). Mit einem Bereich von 90 Grad können Sie jedes Rechteck darstellen, und Sie können das nur auf eine Art tun.

    
Michael Burdinov 06.06.2014 05:57
quelle
3

Ich habe erklärt, wie Sie den Winkel des Rechtecks ​​in [0-180] in dieser Thread .

Der Winkel wird immer entlang der längeren Seite berechnet.

    
Sebastian Schmitz 06.06.2014 06:34
quelle

Tags und Links