-2

OpenCV4Android サンプル (2.4.3.1 の JavaCameraView に基づく) を拡張して、アプリでいくつかのビジョン処理を行いました。この処理は 2.3.3 以降で機能しますが、4.x の電話は除きます。問題を調査しましたが、次の行が使用されていることが問題のようです。

mCamera.setPreviewDisplay(null);

どうやら ICS は、null の surfaceView が渡されるのを好まないようです。4.x での結果は、画面が黒く表示され、onPreviewFrame() に渡されるフレームがありません。

これについて何か助けていただければ幸いです。

完全なコードはここにあります。

4

1 に答える 1

0

答えは、私が言ったように、ICS では動作しなかった 2.4.3.1 を使用していたということです。2.4.3.2 で修正されたことに気づいていませんでした。これにより、質問で言及されている行が次のように変更されます。

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
      mSurfaceTexture = new SurfaceTexture(MAGIC_TEXTURE_ID);
      getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
      mCamera.setPreviewTexture(mSurfaceTexture);
  } else
      mCamera.setPreviewDisplay(null);

SurfaceTexture を使用するには、ターゲットを 3.0 に変更する必要があります。

この問題に関する詳細な議論は、Google グループで見つけることができます。

于 2012-12-30T15:55:44.690 に答える