我正在将一些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怎么样?
非常感谢,
纪尧姆
答案 0 :(得分:0)
对于那些感兴趣的人,我刚刚完成了NTK版本。它需要大约125毫秒,所以加速确实相当可观。