首页 > 解决方案 > 使用camera2 api android和opencvcamera2进行并行处理

问题描述

我正在开发一个应用程序,我想在其中处理来自相机的每一帧并在其上应用一些图像处理算法。我在 onImageAvailable 回调中从 ImageReader 获取图像提要,并将其传递给带有 JNI 接口的 cpp 代码以进行进一步处理。这工作正常,直到我在我的 cpp 代码中执行繁重的操作,之后它开始增加延迟和延迟到相机预览。是否可以并行处理提要图像,以便获得实时结果?我已经为 cameraCaptureSession 使用了不同的线程。

标签: androidparallel-processingjava-native-interfaceandroid-camera2opencv4android

解决方案


增加 ImageReader 的 maxImage 计数,以便您可以同时处理多个图像。但最终,您的吞吐量必须为 30fps,以免减慢预览速度;并行处理仅在(例如)需要 100 毫秒来完成处理时才有帮助,但您可以并排运行 3 个处理线程(因此每 33 毫秒完成一帧)。

或者,如果您跟不上,您可以跳过处理帧;只需检查您的处理是否仍在进行中,如果是,请立即释放图像。当然,如果您唯一的输出是处理后的帧,那将无济于事。


推荐阅读