Die Berechnung der Winkel zwischen den Punkten
Arbeiten mit C++ und opencv
Ich versuche zu berechnen, einen Winkel zwischen zwei Punkten.....Ich habe eine 2D-Fläche mit einem sich ändernden Mittelpunkt der bounding box, Jetzt, wenn der center point in frame 1 hat seinen Standort geändert in Bild 2 ich muss die Winkel dieser beiden Punkte.
Hier ist das Beispiel, was ich versuche zu tun:
Kann jemand vorschlagen, eine Art zu arbeiten das aus.......? eine Art der mathematischen Lösung oder vielleicht eine C++ - Funktion.
- Es gibt keinen Winkel zwischen zwei Punkten nur eine Linie. Sie müssen zwei Zeilen zu definieren, die einen Winkel. Wo ist die andere Linie?
- Ja, wo ist der Winkel? Das heißt, je nachdem, wo die Winkel, die atan2 () - Funktion könnte nützlich sein, auch, aber Sie brauchen, um zu verbessern Ihre Frage/ein Diagramm zu bekommen, eine eindeutige Antwort.
- In der Tat wäre es hilfreich, wenn Sie zurückgreifen können, um den Winkel auf das Bild.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Dot product:
Einen Beispiel-code:
Er berechnet den Winkel zwischen v1 und v2, wie unten Bild
float len1 = sqrt(v1.x * v1.x + v1.y * v1.y);
-->float len1 = hypot(v1.x , v1.y);
Erhältlich C99,Angenommen, Sie möchten berechnen Sie den Winkel zwischen den beiden Punkten relativ zum Ursprung der 2D-Ebene, die Sie verwenden können, das Skalarprodukt zu berechnen, die den Winkel zwischen den Punkten (wie die anderen Antwort dieser Frage beschrieben).
OpenCV hat-Implementierungen berechnen das Skalarprodukt und die Länge der Punkte. Das Skalarprodukt von zwei Punkten:
Länge des Vektors (gemeinhin als die L2-Norm des Vektors) mit
cv::norm
ist:Verwendung von OpenCV-Implementierungen Skalarprodukt und die Länge von Vektor wir haben die folgenden Beispiel-code
Diese Lösung ist nicht nur beschränkt auf 2D-Punkte. Es kann verwendet werden, für die Berechnung der Winkel zwischen 3D-Punkten.