我应该采取哪些步骤,将OpenCV的最新版本集成到一个纯C++(无Java代码)的Android NDK项目中,例如Android NDK Google教程:Endless-Tunnel?官方文档中提到的Android集成方式适用于较旧的版本:OpenCV-2.4,并且文件夹结构已经不同。我在Linux上使用Android Studio。非常感谢您的帮助。
Download opencv Android package (e.g. opencv-4.0.1-android-sdk) and unpack to, say, ~/android
.
To the bottom of CMakeLists.txt, add
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或更高版本(原始示例需要修复在此处)。
除了包含所有OpenCV功能的共享库,您还可以使用静态库(opencv_imgcodecs,opencv_stitching等)。 这些静态库假定默认的ANDROID_STL=c++_static。
为了获得最佳效果,请使用NDK r.18或r.19。
更新: NDK r.21适用于opencv 4.3.0。
<opencv>/sdk/native/libs
添加到jniLIbs.src中。 - Alex Cohn