Gewusst wie: zeichnen von 3D-Koordinaten-Achsen mit OpenCV für face pose estimation?
Nehme an, ich habe das Gesicht euler-Winkel (pitch, yaw, roll) jetzt. Wie kann zeichnen der 3D-Koordinaten-Achsen, die das Antlitz stellen.
Hier ist ein Beispiel aus hier:
- warum nicht einfach den code aus deinem link ?
- Ich will nicht mit OpenGL zu zeichnen, das Ergebnis.
- Erstellen Sie das 3D-Achsen-Eckpunkte/Vektoren. gelten die rotation zu Ihnen. projizieren Sie Ihre Kamera/Bild Flugzeug
- Danke, @Micka. Würden Sie mir bitte mehr details über deine Antwort? Jede code-Beispiel oder opensource-Referenz für das?
- Nein. Lesen Sie über die Kamera-Modell, computer-Grafiken, rendering-pipeline, Kamera-Projektion. Wenn Sie wollen, die einfache Möglichkeit, die OpenGL verwenden. Wenn nicht, lernen und verstehen, wie es gemacht wird (nicht allzu schwierig sein, für die nur einfache Linien). - opencv verfügt über einige Funktionen, um Ihnen zu helfen, den Aufbau des Kamera-Modell und die Umwandlung Ihrer Eckpunkte, aber Sie haben, um zu verstehen, was Sie tun möchten und wie Sie es erreichen. - en.wikipedia.org/wiki/3D_projection
- Tun, was @Micka vorgeschlagen. Wenn Sie nicht wollen, um die OpenGL verwenden, dann, was wollen Sie? Möchten Sie verwenden OpenCV?
- Sie sind pingelig über die Lösung, so sollten Sie erklären, was Ihre Parameter sind. Welche tools sind, können Sie mithilfe von @HoneyTidy
- Ja, ich möchte zu verwenden OpenCV, um zu zeichnen das Ergebnis.
- Es ist eine standard-Technik zu zeichnen, projiziert Linien in OpenCV für Visualisierungen. Keine opengl notwendig ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese kann getan werden, in reiner OpenCV so lange, wie Sie Ihre Kamera-Parameter. Sie sollten in der Lage sein erstellen Sie drei Vektoren, die entsprechende Achse x, y, z (im Grunde Punkte [0,0,0] [1, 0, 0], [0, 1, 0], [0, 0, 1] die Sie später ein Projekt in der Bildebene. Sie sollten zuerst drehen Sie diese Punkte nach Ihrer yaw/pitch/roll (z.B. multipliziert mit einer drehmatrix).
Um Projekt 3D-Punkte auf die Bildebene, verwenden Sie die projectPoints Funktion. Es dauert 3D-Punkte, Parameter der Kamera und erzeugt 2D-Bild Punkten. Sobald Sie die Bild Punkte, können Sie einfach die line Funktion zum zeichnen von Linien zwischen den projizierten Mittelpunkt ([0,0,0], in 3D) und jedem der resultierenden Projektionen der Achse Punkte.
Einem einfachen Beispiel: