【问题标题】:OpenCV android ICSOpenCV 安卓 ICS
【发布时间】:2012-12-30 12:08:10
【问题描述】:

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

mCamera.setPreviewDisplay(null);

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

非常感谢您对此的任何帮助!

完整代码可以在here找到。

【问题讨论】:

  • 不要发布没有周围代码的单行。您发布的行是遗留后备,Android 4.x 上的 OpenCV 示例从未调用过。
  • 单行的原因是指我认为问题所在。我已更新以引用我正在使用的文件 - JavaCameraView。有使用该类的示例,肯定会使用 mCamera.setPreviewDisplay。
  • 刚刚测试了 sample3 - Native 和我得到了相同的结果。我只是在问是否有解决方法。

标签: android opencv android-ndk android-camera


【解决方案1】:

答案是我使用的是 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 中找到有关此问题的更多讨论。

【讨论】:

    猜你喜欢
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多