我正在将一些 C++ OpenCV 桌面代码移植到 Android 并使用 opencv4android。我计划最终切换到 NTK,但就目前而言,由于我对 Android 开发还很陌生,我认为这样做会更容易。
OpenCV 函数在我的 i7-4790 台式机(单线程且无 GPU)上需要 37 毫秒。 Android Nexus 4 上的功能需要 10,557 毫秒。我知道我可以预料到 java 到 native 调用开销会有所下降,但这种巨大的差异似乎很难解释。我正在使用 get/put 但在相对较小的图像(大约 500x500px)上进行大量的每像素操作。
我将我的 opencv 函数放在以下方法中:
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
// opencv4android code
...
}
}
}
}
是否有问题(可能与线程有关)或性能是否正常?我应该期待什么样的放缓? NTK 怎么样?
非常感谢,
纪尧姆
最佳答案
感兴趣的 friend ,我刚刚完成了NTK版本。大约需要 125 毫秒,所以加速确实很可观。
关于java - C++ native OpenCV 到 opencv4android 端口太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157418/