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

标签 android c++ opencv android-ndk

我集成需要哪些步骤,

the latest version of OpenCV

进入一个纯C++(No Java Code)的Android NDK项目,比如Android NDK谷歌教程:

Endless-Tunnel

official documentation对于 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”

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

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

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

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

关于android - 如何将 OpenCV 4.0 集成到纯 C++ Android NDK 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54967251/

相关文章:

linux - 在 Linux 下链接库

android - 自定义 View 显示在屏幕中央

java - 为什么我在解析 json 响应时看到最后一项?

java - 将字符串转换为列表<NameValuePair>

c++ - 类体内的前向声明是否被视为不同的类型?

c++ - 256x256的图标又麻烦了,或者如何通过IImageList获取TRUE图标大小

java - GridView 点击移动图像位置

C++ 库/类从内存位图数组中创建简单的视频文件

opencv - ld : library not found for -llibtbb. 动态库

c++ - 使用 Earth Movers Distance 确定最大距离