如何安装android camera2将预览帧数据提供给OpenCV进行处理

时间:2017-05-23 12:58:51

标签: android android-camera2

我想在相机预览中进行一些图像处理,例如灰度 在老相机api很容易,但移植到camera2 api,我不知道该怎么做

public void onPreviewFrame(byte[] data, Camera cam) {
// custom image data processing
}

我试图从这里获取框架(如问题的答案所示):

private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
        = new ImageReader.OnImageAvailableListener() {

    @Override
    public void onImageAvailable(ImageReader reader) {

        Log.d("Img", "onImageAvailable");
        mBackgroundHandler.post(new ImageSaver(reader.acquireNextImage(), mFile));
    }

};

他没用,因为只有在用户执行了图像捕获后才会调用回调

1 个答案:

答案 0 :(得分:4)

来自Google https://github.com/googlesamples/android-HdrViewfinder的此示例提供了您需要执行的基本操作。

要点:

1)将 Surface 添加到相机的输出

2)收听此表面的更新,在上面的示例中,它发生在 ViewfinderProcessor.java

上面的示例使用2个曲面进行假HDR预览,但您应该能够轻松地将示例清理为仅使用1个曲面。此示例还使用自定义Render Script内核进行处理,您不需要使用它。您可以轻松捕获ViewfinderProcessor.java中的缓冲区类型 Allocation ,以获取旧的Camera API中的字节数组。