如何将OpenCV 4.0集成到纯C ++ Android NDK项目中?

Dis*_*ame 5 c++ android opencv android-ndk

我整合的必要步骤是什么,

最新版本的OpenCV

进入纯C ++(无Java代码)Android NDK项目,例如Android NDK Google教程:

无尽的隧道

android集成的官方文档参考很多旧版本:OpenCV-2.4和文件夹结构不再相同。

我在Linux上使用Android Studio。

非常感谢所有帮助。

Ale*_*ohn 6

  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)
    
    Run Code Online (Sandbox Code Playgroud)

该包将定义以下变量:

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

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

include_directories(${OpenCV_INCLUDE_DIRS})
Run Code Online (Sandbox Code Playgroud)

此版本的预构建 OpenCV SDK 还定义了

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

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

这意味着您的应用清单需要minSdkVersion 16 或更高版本(原始示例需要在此处进行修复)。

相反,它包含了所有的OpenCV功能的共享库,你可以使用静态库(opencv_imgcodecsopencv_stitching)。这些静态库假定默认ANDROID_STL=c++_static

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

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

  • 这在我看来是 Android Gradle 插件中的一个小故障。我必须多做一些实验。简单的解决方法是将 `<opencv>/sdk/native/libs` 添加到 **jniLIbs.src** (2认同)