整合我需要采取哪些步骤
进入纯C ++(无Java代码)Android NDK项目,例如Android NDK Google教程:
用于Android集成的official documentation指的是更旧的版本:OpenCV-2.4,文件夹结构不再相同。
我正在Linux上使用Android Studio。
高度赞赏所有帮助。
答案 0 :(得分:2)
下载opencv Android软件包(例如opencv-4.0.1-android-sdk)并解压缩到~/android
。
在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,以便为导入的共享库提供更好的支持。。