我扩展了一个OpenCV4Android示例(基于2.4.3.1中的JavaCameraView),在我的应用程序中进行了一些视觉处理。除了任何4.x手机外,处理工作在2.3.3及以上版本。我已经研究了这个问题,似乎问题是使用了以下行:
mCamera.setPreviewDisplay(null);
显然,ICS并不喜欢被传递null surfaceView。 4.x的结果是屏幕显示为黑色,并且没有帧传递给onPreviewFrame()。
我非常感谢你们的任何帮助!
可以找到完整的代码here。
答案 0 :(得分: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中找到有关此问题的更多讨论。