2017-11-29 3 views
0

setPreviewCallbackWithBufferを使用し、onPreviewFrame()コールバックでビデオフレームピクセルデータを取得しました。バイトデータは、YUV NV21の形式であり、90度回転されています。私はプレビュー枠をYUVからRGBに変換する方法を知っていました。しかし、私は後で多くの画像処理タスクがあったので、私が必要としなかった時間(約20ms)がかかりました。カメラのパラメータを設定するか、コードを変換する&コードを変更せずに正しい向きのビデオフレームを取得するにはどうすればよいですか?Android onPreviewFrame()コールバックの画像の向きが正しくありませんか?

答えて

0

Camera.setDisplayOrientation()のスクリーンでカメラのライブプレビューの向きを本質的に自由に修正できますが、JPEG画像や録画ビデオには影響しません。

他の関連する方法は、キャプチャされたJPEG画像に適用されるsetRotation()と、MediaRecorderのためにsetOrientationHint()です。

しかし、これらの方法のいずれも、preview callbacksに渡されるバイト配列の順序に影響しません。 カメラ2 APIの場合でも、この問題は解決されません。

必要な場合は、NV21フレームを回転させるためにRGBを通過する必要はありません。このバイト操作は色変換よりもはるかに高速ですが、依然として時間がかかります。イメージ処理(タグでヒント)の場合、イメージ処理アルゴリズムをチューニングして回転イメージを受け入れることをお勧めします。アルゴリズム部分を変更するのが面倒すぎるが、画像処理プロシージャがC++で書かれている場合、C++でYUVローテーションをコード化するとパフォーマンスが向上します。

関連する問題