java - Android Studio 中的 NDK 和 OpenCV 设置

标签 java android opencv android-ndk opencv4android

我将“OpenCV for Android”模块导入到 Android Studio 中,并尝试用 Java 代码实现我的图像处理功能。

大多数 OpenCV 方法如 Core.multiply 和 Core.add 工作正常,但是,我发现一些 OpenCV 方法如 Mat.put() 和 Mat.get() 效率不高,程序运行非常慢在我的设备中。

所以,我的问题是,

  1. 如果我在 Android Studio 中设置 NDK,这会让我的程序运行得更快吗? (我认为如果我在C++中使用指针,程序会更有效率,我不确定这是否正确)

  2. 我以这种方式使用 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()?

  1. 如果使用 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/

相关文章:

java - 替换不在字符串中的单词

java - LogCat 消息的更简洁的着色?

c - OpenCV 在单独的窗口中显示传入视频和修改后的视频

c++ - 即使在混合后也想要透明图像

opencv - 如何将 K 均值应用于图像的蒙版而不是整个图像

JavaFX 小行星游戏克隆 : Having trouble bouncing asteroids off eachother

java - 保存状态的 Android 问题

java - 在 Java 中将 EST 转换为 EDT,反之亦然

java - 使用 ArrayList 的 android java insertsort

android - 如何使用光标获取嵌入音频文件的封面艺术?