【问题标题】:How can I integrate OpenCV 4.0 into a pure C++ Android NDK project?如何将 OpenCV 4.0 集成到纯 C++ Android NDK 项目中?
【发布时间】:2019-07-24 19:43:08
【问题描述】:

我需要哪些步骤来整合,

the latest version of OpenCV

转成纯C++(No Java Code) Android NDK项目,如Android NDK谷歌教程:

Endless-Tunnel ?

official documentation 用于 android 集成指的是更旧的版本:OpenCV-2.4 和文件夹结构不再相同。

我在 Linux 上使用 Android Studio。

高度赞赏所有帮助。

【问题讨论】:

    标签: android c++ opencv android-ndk


    【解决方案1】:
    1. 下载 opencv Android 包(例如opencv-4.0.1-android-sdk)并解压到~/android

    2. CMakeLists.txt的底部,添加

      set( OpenCV_DIR "~/android/OpenCV-android-sdk/sdk/native/jni" )
      find_package( OpenCV REQUIRED )
      target_link_libraries(game opencv_java)
      

    包将定义以下变量:

    OpenCV_LIBS : OpenCV 模块的所有导入目标列表。

    OpenCV_INCLUDE_DIRS : OpenCV 包含目录的列表。使用 CMake >= 2.8.11,您甚至不需要编写

    include_directories(${OpenCV_INCLUDE_DIRS})
    

    这个版本的预建 OpenCV SDK 也定义了

    OpenCV_VERSION :此 OpenCV 构建的版本:“4.0.1”

    OpenCV_ANDROID_NATIVE_API_LEVEL : Android API 的最低要求级别:“16”

    这意味着您的应用清单需要 minSdkVersion 16 或更高(原始示例需要修复 here)。

    您可以使用静态库(opencv_imgcodecsopencv_stitching)代替包含所有 OpenCV 功能的共享库。这些静态库采用默认的 ANDROID_STL=c++_static

    为获得最佳效果,请使用 NDK r.18r.19

    更新:NDK r.21 适用于 opencv 4.3.0

    【讨论】:

    • 看起来是完美的答案。但我需要 3 天的时间来确认。非常感谢。
    • 这在我看来是 Android Gradle 插件中的一个小故障。我必须做更多的实验。简单的解决方法是将<opencv>/sdk/native/libs 添加到 jniLIbs.src
    • 手动创建 jniLibs 文件夹并将 ~/OpenCV-android-sdk/sdk/native/libs 内容复制到该文件夹​​。 [链接]youtube.com/watch?v=Lg24S-Y8NU8谢谢@AlexCohn。如果您在实验后找到解决方案,请告诉我。
    • 谢谢@AlexCohn
    • 使用 Android Gradle 插件 4.0 时,导入的目标不再需要自定义复制命令,请参见此处:developer.android.com/studio/projects/…
    【解决方案2】:

    如果您想创建共享对象(.so) 并在不使用 Android Studio 的情况下进行编译,这里是我的blog。当您想要创建本地第三方库时,这通常很有用。

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 2015-02-18
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多