如何将OpenCV 4.0集成到纯C ++ Android NDK项目中? [英] How can I integrate OpenCV 4.0 into a pure C++ Android NDK project?

查看:325
本文介绍了如何将OpenCV 4.0集成到纯C ++ Android NDK项目中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

整合我需要采取哪些步骤

What are the steps necessary for me to integrate,

OpenCV的最新版本

进入纯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.

高度赞赏所有帮助.

推荐答案

  1. 下载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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆