1
我將模塊「OpenCV for Android」導入到Android Studio中,並試圖在Java代碼中實現我的圖像處理功能。Android Studio中的NDK和OpenCV設置
像Core.multiply和Core.add等大多數OpenCV方法都能正常工作,但是,我發現Mat.put()和Mat.get()等一些OpenCV方法效率不高,程序運行真正在我的設備中慢。
所以,我的問題是,
如果我Android Studio中建立NDK,這將讓我的程序運行得更快? (我認爲如果我在C++中使用指針,程序會更高效,我不確定這是否正確)
我以這種方式使用OpenCV方法Mat.get()和Mat.put()
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.testPhoto);
Mat m1 = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4);
Mat m2 = m1.clone();
Utils.bitmapToMat(bitmap, m1);
byte[] arr = new byte[(int)(m1.total() * m1.channels())];
m1.get(0,0,arr);
//some processing here...
m2.put(0,0,arr);
那麼,有沒有使用Mat.get()和Mat.put()任何更有效的方式?
- 如果使用NDK是一種更好的方法,如何在Android項目中設置OpenCV和NDK?我試圖按照這個tutorial在Android Studio中設置NDK,但是一旦我設置了NDK,我就無法將OpenCV導入到我的項目中。
當然,NDK opencv C++比java快得多。除非你使用非常大的矩陣,Mat.get和put不應該是一個緩慢的操作。無論如何,位圖類不是管理處理圖像的最佳類。但是,jni + C++ + opencv開發並不是很容易學習,您需要學習有關JMV虛擬機的不同概念。 – uelordi