OpenCV Android:在背景中获取相机帧而不显示在屏幕上

时间:2014-05-19 19:18:51

标签: android opencv camera background-process

我编写了一个光流检测应用程序,该应用程序基于OpenCV for Android教程和Barry Thomas应用程序OpenCV Demo 2的源代码。现在我想让这个应用程序成为后台任务,这样我就可以通过监听器接口将检测结果传递给我的主要活动。

OpenCV totorials中的所有应用程序示例都扩展Activity并实现CvCameraViewListener并在scrren上显示摄像头输入。我希望能够捕捉相机帧并在背景中对帧进行光流检测,而不会在屏幕上显示它们。

如何在背景中从相机中获取帧,而无需显示相机输入?

2 个答案:

答案 0 :(得分:1)

有两种方法,但你必须在方法onCameraFrame的内存中保留一个Mat:

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    mRgba = inputFrame.rgba();      
    return mRgba;
}

1)使cameraview不可见 2)使onCameraFrame返回null

您应该在另一种视图中进行额外的工作。

答案 1 :(得分:0)

我发现在后台获取相机框架的唯一方法是使用SurfaceTexture代替SurfaceView,因此使用Camera.setPreviewTexture代替Camera.setPreviewDisplay进行设置。

This回答以及this one帮助。