我移植了一些C++ OpenCV的桌面代碼,Android和使用opencv4android。我打算改用NTK最終但是現在,因爲我是很新的Android開發,我認爲這將是更容易進行的方式。C++原生OpenCV到opencv4android端口太慢?
在OpenCV函數接受我的i7-4790桌面(單線程和沒有GPU)上僅爲37微秒。 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怎麼樣?
非常感謝,
紀堯姆
我切換像素的訪問代碼在Java數組中的所有數據時可能的,並且計算後一次全部複製回墊時儘可能在[鏈接](http://answers.opencv.org/question/5複製/如何對獲取和 - 修改 - 在象素的-MAT-中的Java /)。我也有些感動文件I/O的東西定時計算以外,我下降到約4,000ms,這大概是現在100X慢... – Guillaume