すべてのAndroidカメラは、setPreviewCallbackによって有効化されるアプリケーションバウンドコールバックのために、2つのYUV形式、NV21、およびYV12(setPreviewFormatのドキュメントを参照)をサポートする必要があります。
一部のデバイスは追加のフォーマット(RGB、YUYV2など)をサポートしている場合がありますが、これら2つは必須であるため、いずれかを選択することをお勧めします。YV12は、問題のハードウェアによって異なりますが、効率が高くなる可能性が高くなります。
2つ目については、 ImageMagickなどのユーティリティプログラムを使用して色変換を行うことができますが、これらの形式に関するもう1つのポイントは、クロマ(カラー)プレーン用にサブサンプリングされていることです。NV21とYV12はどちらも、カラーフォーマットを両方の次元で2倍ダウンサンプリングします。たとえば、画像サイズが640x480の場合、Y(輝度)チャネルは640x480になりますが、UチャネルとVチャネルはどちらも320x240にすぎません。ほとんどの画像ライブラリはその種の形式を公開しないため、おそらくこのサブサンプリングを自分で行う必要があります(JPEG画像は通常、同様のサブサンプリングされたYUV形式で保存されますが、ほとんどのライブラリは、提供する前に完全なRGBに変換し直しますデータ)。
編集:追記
または、アルゴリズムがGPUで適切に機能する場合は、カメラからのsetPreviewTextureパスを使用できます。これにより、GPUシェーダーで画像データを処理できます。その場合、データは常にRGBであり、OpenGL2.0のGLSLシェーダーでテクスチャとしてアクセスされます。