android - 如何将 OpenCV 库添加到 AS3.1.2 和 NDK 17.0

标签 android android-studio opencv android-ndk opencv4android

我需要在 Android Studio 3.1.2 中使用 OpenCV。我有这个 IDE 和 NDK (17.0.4754217) 的最后一个版本是 05/20/2018。

我读了this post谈论它,并说了一些关于 NDK 版本 16 的问题,但事实并非如此。

大多数指南都是针对旧版本的 Android(我看到指南谈论用于 Android 开发的 Eclipse IDE)但是没有最新版本或最接近的版本,这是一个问题,因为最新版本的 AS 导致许多旧项目或制作方式的错误,因此它们使这些指南过时了。

可能是由于我不知道如何使用 NDK 和 CMake 这一事实引起的问题,所以如果有人知道如何或曾尝试这样做,我将不胜感激,会告诉我如何将 OpenCV 添加到 Android 3.1.2,也许这篇文章可以帮助其他用户使用 NDK 和 AS 的 future 版本。

这么多。

最佳答案

1.确保您的 Android SDK 是最新的,并且安装了 NDK

2.从 OpenCV.org 下载适用于 Android 的最新 OpenCV SDK 并解压缩 zip 文件。

3.新建一个Android Studio项目

  • 检查包括 C++ 支持 image 1
  • 选择空 Activity
  • 在 C++ 支持中,您可以检查 -fexceptions 和 -frtti image 2

4.导入OpenCV库模块

  • 新建 -> 导入模块
  • 选择 YOUR_OPENCV_SDK/sdk/java 文件夹 image 3
  • 取消替换 jar,取消替换 lib,取消创建 gradle-style image 4

5. 设置 OpenCV 库模块以适合您的 SDK

app/build.gradle image 5

opencv/build.gradle image 6

编辑 openCVLibrary/build.gradle 以匹配您的 app/build.gradle 例如:

compileSdkVersion 27
defaultConfig {
minSdkVersion 19
targetSdkVersion 27
}

6. 在您的应用模块中添加 OpenCV 模块依赖

文件 -> 项目结构 -> 模块应用程序 -> 依赖项选项卡 -> 新建模块依赖项 -> 选择 OpenCV 库模块 image 7

image 16

7. 通过右键单击 app/src/main 创建一个 jni 文件夹,然后单击 Change Folder Location 将文件夹从 jni 重命名为 jniLibs

之后的框
  • 第一步 image 8

  • 第二步 image 9

  • 第三步 image 10

8. 从您下载的 opencv 目录 YOUR_OPENCV_SDK/sdk/native/libs 复制所有文件并将它们粘贴到 >jniLibs 文件夹

  • 第一步 image 11

  • 第二步 image 12

9. 设置app build.gradle

  • 添加 abiFilters

    externalNativeBuild {
    cmake {
        cppFlags "-frtti -fexceptions"
        abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
       }
    }
    

    image 13

10.配置CMakeLists.txt文件

  • 复制这三行并粘贴到cmake_minimum_required

    之后
    include_directories(YOUR_OPENCV_SDK/sdk/native/jni/include)
    add_library( lib_opencv SHARED IMPORTED )
    set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so)
    

    image 14

  • CMakeLists.txt的末尾,将lib_opencv写入target_link_libraries列表 image 15

现在一切都完成了,享受使用 opencv 编码的乐趣吧...... Final Image

关于android - 如何将 OpenCV 库添加到 AS3.1.2 和 NDK 17.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433813/

相关文章:

Android Listview 与 sqlite 和 CursorAdapter

android - EditText 光标在左上角位置。

android - 如何在 Android 的 GLSurfaceView 上播放视频?

java - 如何在 fragment 中设置内容 View

python - 为什么在 python cv2.bitwise 中使用类似的源参数?示例 :cv2. bitwise_and(roi,roi,mask = mask_inv)

c++ - Opencv 图像拼接混合(多波段混合)

java - ContextCompat.getColor 方法忽略夜间模式

android-studio - 无法解析':app @ debug/compileClasspath'的依赖项:无法解析com.android.support:appcompat-v7:28.0.0-rc01

android - 在没有 Gradle 的情况下从 Eclipse 迁移到 Android Studio

c++ - OpenCV 相机初始化失败