-2

我扩展了一个 OpenCV4Android 示例(基于 2.4.3.1 中的 JavaCameraView)以在我的应用程序中进行一些视觉处理。该处理适用于 2.3.3 及更高版本,但任何 4.x 手机除外。我已经研究了这个问题,似乎问题在于使用了以下行:

mCamera.setPreviewDisplay(null);

显然 ICS 不喜欢被交给一个空的surfaceView。在 4.x 上的结果是屏幕看起来是黑色的,并且没有传递给 onPreviewFrame() 的帧。

我真的很感激这方面的任何帮助!

完整的代码可以在这里找到。

4

1 回答 1

0

答案是我使用的是 2.4.3.1,正如我所说,它在 ICS 上不起作用。我没有意识到它已在 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);

目标需要更改为 3.0 才能使用 SurfaceTexture。

您可以在Google Groups中找到有关此问题的更多讨论。

于 2012-12-30T15:55:44.690 回答