La mia app fotocamera elabora i fotogrammi della fotocamera da onPreviewFrame()
con OpenCV e li visualizza sullo schermo. Tuttavia, i frame grezzi sono orientati nel modo in cui la videocamera è montata sul telefono, che di solito non è rivolta verso l'alto. Per risolvere questo problema, li ruoto manualmente con OpenCV, che richiede molto tempo.Orientare correttamente i dati della fotocamera non elaborati
Ho guardato in utilizzando setDisplayOrientation, ma la documentazione afferma che
Ciò non pregiudica l'ordine dei byte passato in onPreviewFrame
e ho bisogno dei dati di realtà essere con il lato destro rivolto verso l'alto, non solo il display rivolto verso l'alto. Come posso orientare correttamente i dati della fotocamera grezza? Se ciò è impossibile, posso ruotare in modo efficiente l'array di byte passato a me in onPreviewFrame()
, ad esempio utilizzando OpenGL?
Ho visto prima, ma dice 'Ciò influenza le immagini restituite da JPEG Camera.PictureCallback. Ruota i dati grezzi anche se non si utilizza questa richiamata? –
i dati grezzi non possono essere manipolati, poiché è proprio ciò che il sensore "vede". Credo che scriva solo il tag Exif corrispondente nel JPEG. Ma openCV dovrebbe essere in grado di leggere Exif, quindi cambia le coordinate quando lo copia nel Mat. Credo. – sschrass
Quando utilizzo 'onPreviewFrame()', rilascia i dati YUV non elaborati in un array di byte. Non è in corso alcuna conversione in JPEG e in realtà non "scatto". Quindi non sembra che questa soluzione funzionerà per me. –