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

时间:2019-03-03 09:09:56

标签: android c++ opencv android-ndk

整合我需要采取哪些步骤

the latest version of OpenCV

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

Endless-Tunnel

用于Android集成的

official documentation指的是更旧的版本:OpenCV-2.4,文件夹结构不再相同。

我正在Linux上使用Android Studio。

高度赞赏所有帮助。

1 个答案:

答案 0 :(得分:2)

  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)
    
    get_target_property(__src opencv_java IMPORTED_LOCATION_RELEASE )
    add_custom_command(TARGET game POST_BUILD COMMAND
      ${CMAKE_COMMAND} -E copy ${__src} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
    )
    

该软件包将定义以下变量:

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_imgcodecs opencv_stitching )代替包含所有OpenCV功能的共享库。这些静态库采用默认的 ANDROID_STL = c ++ _ static

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

我为Android NDK打开了feature request,以便为导入的共享库提供更好的支持。