C++ Android上的OpenCV多线程框架

C++ Android上的OpenCV多线程框架,c++,multithreading,opencv,opencl,opencv4android,C++,Multithreading,Opencv,Opencl,Opencv4android,我正在Android上使用OpenCV做一些工作。我的代码都在Java接口上,它的性能非常差,所以我用JNI实现了几乎所有的图像处理。关于Java,我有: @Override public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { _imgBgrTemp = inputFrame.rgba(); jniFrame(_imgBgrTemp.nativeObj); return

我正在Android上使用OpenCV做一些工作。我的代码都在Java接口上,它的性能非常差,所以我用JNI实现了几乎所有的图像处理。关于Java,我有:

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame)
{
    _imgBgrTemp = inputFrame.rgba();
    jniFrame(_imgBgrTemp.nativeObj);
    return _imgBgrTemp;
}
因此,JNIFRAM()函数负责C++中所有的图像处理,并在性能上有了很大的改进。但它仍然是8fps左右,我的相机不需要对图像进行任何处理就可以达到30fps

仔细看,我发现即使在处理代码的时候,它也只使用了我的安卓系统的25%的CPU,witch是一款带有四核处理器的Zenfone 2

我正在考虑让它在4个线程中运行,这样我就有了FIFO池来接收帧、处理并按接收到的顺序显示它

在使用中,我想:

所以我的问题是:

我走对了吗

你有什么建议吗

我应该考虑什么(就像我和JNI一起工作)?

我没有在这里发布jniFrame(),因为我认为它不太相关,因为它是一个正在进行的代码,非常大。但它是关于识别一个魔方并得到它的颜色。如果你也能给我一些建议。。。但我可能会在以后提出另一个关于这一部分的问题

更新: 我只是在寻找使用OpenCL的方法,但它看起来比多线程更复杂,我不确定改进是否会好。它会比多线程更好吗