如何将OpenCV 4.0集成到纯C ++ Android NDK项目中? [英] How can I integrate OpenCV 4.0 into a pure C++ Android NDK project?
问题描述
整合我需要采取哪些步骤
What are the steps necessary for me to integrate,
进入纯C ++(无Java代码)Android NDK项目,例如Android NDK Google教程:
into a pure C++(No Java Code) Android NDK project, such as Android NDK Google tutorial:
无尽隧道 ?
官方文档涉及很多较早的版本:OpenCV-2.4和文件夹结构不再相同.
official documentation for android integration refers to much older version :OpenCV-2.4 and folder structures are no longer the same.
我正在Linux上使用Android Studio.
I am using Android Studio on Linux.
高度赞赏所有帮助.
推荐答案
-
下载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}
)
该软件包将定义以下变量:
The package will define the following variables:
OpenCV_LIBS :OpenCV模块的所有导入目标的列表.
OpenCV_LIBS : The list of all imported targets for OpenCV modules.
OpenCV_INCLUDE_DIRS: OpenCV的包含目录列表.使用CMake> = 2.8.11时,您甚至不需要编写
OpenCV_INCLUDE_DIRS : The list of OpenCV include directories. With CMake >= 2.8.11 you don't even need to write
include_directories(${OpenCV_INCLUDE_DIRS})
此版本的预建OpenCV SDK也进行了定义
This version of prebuilt OpenCV SDK defines also
OpenCV_VERSION::此OpenCV内部版本:"4.0.1"
OpenCV_VERSION : The version of this OpenCV build: "4.0.1"
OpenCV_ANDROID_NATIVE_API_LEVEL:最低要求的Android API级别:"16" .
OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API: "16".
这意味着您的应用清单需要 minSdkVersion 或更高版本(原始示例需要修复
This means that your app manifest needs minSdkVersion 16 or higher (the original sample needs a fix here).
可以使用静态库( opencv_imgcodecs , opencv_stitching ,等)代替包含所有OpenCV功能的共享库.这些静态库采用默认的 ANDROID_STL = c ++ _ static .
Instead of the shared library that contains all OpenCV functionality, you can use static libraries (opencv_imgcodecs, opencv_stitching, et al). These static libraries assume the default ANDROID_STL=c++_static.
为获得最佳效果,请使用NDK r.18 或 r.19 .
For best results, use NDK r.18 or r.19.
我已经为Android NDK打开了功能请求为导入的共享库提供更好的支持.
I have opened a feature request for Android NDK to provide better support for imported shared libraries.
这篇关于如何将OpenCV 4.0集成到纯C ++ Android NDK项目中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!