简体   繁体   English

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

[英]C++ native OpenCV to opencv4android port too slow?

I am porting some C++ OpenCV desktop code to Android and using opencv4android. 我正在将一些C ++ OpenCV桌面代码移植到Android并使用opencv4android。 I am planning to switch to NTK eventually but for now, since I am very new to Android development, I thought it would be easier to proceed that way. 我计划最终转换为NTK,但由于我对Android开发非常陌生,所以我认为这样做会更容易。

The OpenCV function takes 37ms on my i7-4790 desktop (single thread and no GPU). OpenCV功能在我的i7-4790台式机上需要37毫秒(单线程,没有GPU)。 The function on Android Nexus 4 takes 10,557ms. Android Nexus 4上的功能需要10,557毫秒。 I knew I could expect some slowdown with the java to native call overhead but that huge difference seems hard to explain. 我知道我可以预期Java到本机调用的开销会有所下降,但是这种巨大的差异似乎很难解释。 I am doing a lot of per-pixel operations with get/put but on relatively small images (about 500x500px). 我正在使用get / put进行很多每个像素的操作,但是在相对较小的图像(大约500x500px)上。

I put my opencv function in the following method: 我将opencv函数放入以下方法中:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {

    @Override
    public void onManagerConnected(int status) {

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

Is there something wrong (maybe related to threading) or that performance is normal ? 有什么问题(可能与线程有关)还是性能正常? What kind of slowdown should I expect ? 我应该期待什么样的放缓? How about with NTK ? NTK呢?

Many thanks, 非常感谢,

Guillaume 纪尧姆

For those interested, I just finished the NTK version. 对于那些感兴趣的人,我刚刚完成了NTK版本。 It takes about 125ms, so the speedup is indeed considerable. 它大约需要125毫秒,因此加速确实非常可观。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM