【问题标题】:How to import OpenCV 4.5 in Android Studio如何在 Android Studio 中导入 OpenCV 4.5
【发布时间】:2021-04-10 17:13:14
【问题描述】:

事实上,这个问题仍然偶尔会得到新的支持,这让我觉得我不是唯一一个遇到这种情况的人,所以我决定一步一步地解释什么对我有用,希望其他人可能会发现它在未来很有用。一切都基于this video,但我认为最好在这里写一个适当的指南,以防它被删除。

如果您正在寻求有关 OpenCV 3.4 的帮助,this 是我在尝试 4.5 版之前所关注的。

【问题讨论】:

标签: android android-studio opencv opencv4


【解决方案1】:

这是我目前在 Android Studio 4.1.3 上使用 OpenCV 4.5.2 的完整过程。

  1. 在您的项目中单击File > New > Import Module... 并选择您的OpenCV 下载中的/sdk 目录。给它起一个有意义的名称,然后等待过程完成:您选择的目录应该已经复制到默认 /app 目录所在的项目的根目录中;
  2. 打开项目结构(例如单击File > Project Structure...),然后转到Dependencies(在左侧),单击appDeclared Dependencies 选项卡中的+ 图标(不是Modules 标签中的那个);
  3. 单击Module Dependency 并选中您之前导入的OpenCV SDK 的复选框。您现在应该在列表中看到它以及其他依赖项,因此单击 ApplyOK 退出项目结构;
  4. 打开应用模块的build.gradle文件,复制compileSdkVersionminSdkVersiontargetSdkVersion的值,然后将它们粘贴到OpenCV模块的build.gradle文件中,替换默认值,使其匹配确切地。您还可以将sourceCompatibilitytargetCompatibility 字段更新为JavaVersion.VERSION_1_8
  5. 最后,将您的项目与 Gradle 文件同步。

要检查它是否有效,请将此 sn-p 添加到您的代码中,例如在MainActivity

if (OpenCVLoader.initDebug()) {
    Log.d("myTag", "OpenCV loaded")
}

【讨论】:

    【解决方案2】:

    opencv 4.5.3 版本的 sdk 目录是“opencv/sources/modules/java/android_sdk”。在https://stackoverflow.com/a/65571017/9486652 上执行每个步骤后,我遇到了一些错误,我通过评论或删除解决了它 'arguments "-DANDROID_STL=@ANDROID_STL@"' 行,位于 opencv 模块的 build.gradle 中。

        externalNativeBuild {
             cmake {
    //          arguments "-DANDROID_STL=@ANDROID_STL@"
                targets "opencv_jni_shared"
            }
        }
    

    【讨论】:

      【解决方案3】:

      我在 android studio 中成功导入了 opencv 4.5.2。这并不难。关键是为 CMake 提供正确的 OpenCV_DIR 路径来安装 OpenCV。详细教程写在 https://kcwong-joe.medium.com/how-to-import-opencv-4-5-2-in-android-studio-d9114179628f 但我会在这里简单描述一下这个过程。

      下载SDKhttps://opencv.org/releases/

      通过文件导入模块 > 新建 > 导入模块...

      在setting.gradle中添加OpenCV模块

      include "opencv"
      project(":opencv").projectDir = file("sdk")
      

      在应用程序 build.gradle 下添加 OpenCV_DIR cmake 参数 android > defaultConfig > externalNativeBuild > cmake

      arguments "-DOpenCV_DIR=" + file('../sdk').absolutePath + "/native/jni",
              "-DANDROID_TOOLCHAIN=clang",
              "-DANDROID_STL=c++_shared"
      

      在应用程序 build.gradle 中添加 OpenCV 模块依赖

      implementation project(':opencv')
      

      在您的应用程序 cmake 中链接 OpenCV 库。

      set(ANDROID_OPENCV_COMPONENTS "opencv_java" CACHE STRING "")
      message(STATUS "ANDROID_ABI=${ANDROID_ABI}")
      find_package(OpenCV REQUIRED COMPONENTS ${ANDROID_OPENCV_COMPONENTS})
      ......
      target_link_libraries(${PROJECT_NAME} ${ANDROID_OPENCV_COMPONENTS})
      

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-17
        • 2018-10-06
        • 2023-03-21
        • 1970-01-01
        相关资源
        最近更新 更多