我将“OpenCV for Android”模块导入到 Android Studio 中,并尝试用 Java 代码实现我的图像处理功能。
大多数 OpenCV 方法如 Core.multiply 和 Core.add 工作正常,但是,我发现一些 OpenCV 方法如 Mat.put() 和 Mat.get() 效率不高,程序运行非常慢在我的设备中。
所以,我的问题是,
如果我在 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 导入到我的项目中。
最佳答案
要设置 OpenCV 和 NDK,首先您将 OpenCV 库作为模块导入到您的 android 项目中,并将其添加为依赖项。然后你可以研究如何设置 Android NDK。
通过BitmapFactory将图像作为输入并转换成Mat后,就可以在NDK中对图像进行处理,使程序运行更快、更高效。
关于java - Android Studio 中的 NDK 和 OpenCV 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39461996/