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

How can I integrate OpenCV 4.0 into a pure C++ Android NDK project?

我集成需要哪些步骤,

the latest version of OpenCV

进入纯C++(无Java代码)AndroidNDK项目,如AndroidNDKGoogle教程:

Endless-Tunnel

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

我在 Linux 上使用 Android Studio。

非常感谢所有帮助。

  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 功能的共享库62=]、)。这些静态库假定默认 ANDROID_STL=c++_static.

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

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

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