3

カメラ プレビューからビットマップ イメージを取得しようとしています。顔検出を実行した後、いくつかの処理を行い、いくつかのオーバーレイを描画します。

周りを見回した後、 onPreviewFrame が取るバイト配列はビットマップに直接デコードできないことがわかりました。YuvImage を使用して正しいピクセル形式に変換する必要があり、それがまさに私がしたことです:

@Override
public void onPreviewFrame(byte[] data, Camera camera)
{
    YuvImage temp = new YuvImage(data, camera.getParameters().getPreviewFormat(), camera.getParameters().getPictureSize().width, camera.getParameters().getPictureSize().height, null);

    ByteArrayOutputStream os = new ByteArrayOutputStream();
    temp.compressToJpeg(new Rect(0, 0, temp.getWidth(), temp.getHeight()), 80, os);

    Bitmap preview = BitmapFactory.decodeByteArray(os.toByteArray(), 0, os.toByteArray().length);

    /* DO SOMETHING WITH THE preview */

}

問題は、「プレビュー」オブジェクトが null ではなく、明らかに有効なビットマップではないことです。デバッガーでは、mWidth と mHeight の両方が -1 に設定されていることがわかりますが、これは間違っているようです。私は何を間違っていますか?

4

3 に答える 3

0

ここに問題に関する詳細情報があります: https://code.google.com/p/android/issues/detail?id=823

于 2013-03-15T19:13:45.103 に答える
0

あなたは:)getPictureSizeの代わりに使用していますgetPreviewSize

于 2015-02-11T14:32:06.010 に答える