Meine Kamera-App verarbeitet rohe Kamerabilder von onPreviewFrame()
mit OpenCV und zeigt sie dann auf dem Bildschirm an. Die rohen Bilder sind jedoch so orientiert, wie die Kamera am Telefon angebracht ist, was normalerweise nicht richtig ist. Um das zu beheben, drehe ich sie manuell mit OpenCV, was zeitaufwendig ist.Raw-Kameradaten richtig ausrichten
Ich habe in schaute setDisplayOrientation verwenden, aber die Dokumentation besagt, dass
Dies ist nicht die Reihenfolge der Byte-Array in onPreviewFrame weitergegeben beeinflusst
und ich brauche die Daten zu tatsächlich sein mit der rechten Seite nach oben, nicht nur mit der rechten Seite nach oben. Wie kann ich die rohen Kameradaten korrekt ausrichten? Wenn das nicht möglich ist, kann ich das Byte-Array, das mir in onPreviewFrame()
übergeben wurde, effizient rotieren, sagen wir OpenGL?
Ich habe das schon gesehen, aber es sagt 'Dies betrifft die Bilder von JPEG Camera.PictureCallback zurückgegeben.' Rotiert es die Rohdaten, auch wenn Sie diesen Rückruf nicht verwenden? –
Die Rohdaten können nicht manipuliert werden, da es genau das ist, was der Sensor "sieht". Ich glaube, es schreibt einfach das entsprechende Exif-Tag in das JPEG. Aber openCV sollte in der Lage sein, Exif zu lesen, es ändert dann die Koordinaten, wenn ich es in die Matte kopiere, glaube ich. – sschrass
Wenn ich 'onPreviewFrame()' verwende, werden die rohen YUV-Daten in ein Byte-Array abgelegt. Es gibt keine Konvertierung zu JPEG und ich mache kein Bild. Es scheint also nicht so, als würde diese Lösung für mich funktionieren. –