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?
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.
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.
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.