C ++本机OpenCV到opencv4android端口太慢了?

时间:2016-02-02 15:27:27

标签: java android performance opencv opencv4android

我正在将一些C ++ OpenCV桌面代码移植到Android并使用opencv4android。我计划最终切换到NTK但是现在,因为我对Android开发很新,我认为以这种方式进行会更容易。

我的i7-4790桌面上的OpenCV功能需要37ms(单线程,没有GPU)。 Android Nexus 4上的功能需要10,557ms。我知道我可以期待java的本地调用开销有所放缓,但这种巨大的差异似乎很难解释。我使用get / put进行了大量的逐像素操作,但是相对较小的图像(大约500x500px)。

我将opencv函数放在以下方法中:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {

    @Override
    public void onManagerConnected(int status) {

        switch (status) {
            case LoaderCallbackInterface.SUCCESS:
            {
                 // opencv4android code
                 ...
            }
        }
    }
}

是否存在错误(可能与线程有关)或性能是否正常?我应该期待什么样的放缓? NTK怎么样?

非常感谢,

纪尧姆

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,我刚刚完成了NTK版本。它需要大约125毫秒,所以加速确实相当可观。