编译OpenCV3.3源码生成Android SDK

Posted OpenCV学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译OpenCV3.3源码生成Android SDK相关的知识,希望对你有一定的参考价值。

编译OpenCV3.3源码生成android SDK

最近因为工作需要,需要在Android平台上编译OpenCV与其扩展模块生成Android SDK,之前因为有编译过OpenCV相关的Android NDK的项目,以为在Android平台上编译OpenCV源码很容易,花了两天的时候才完成整个编译过程,主要原因归结有一下:

  1. Android Studio上从SDK Manager下载的NDK居然缺少文件,刚开始没有意识到,浪费了不少时间,所以一定要下载离线版本,手动安装比较靠谱。

  2. 编译生成Java源代码的时候CMake一直不能检测到JAVAHOME、ANTHOME等环境变量,只能手动添加才可以,这个感觉比较坑。

  3. 当然是个人学艺不精,第一次完整编译OpenCV生成Android SDK,跟编译NDK项目有很多的不同。个人建议最好在乌班图上编译,在Windows上编译生成Android SDK比较麻烦。因为本人就是在Windows上完成编译的,下面就说说整个过程。

准备阶段

  • 下载安装JDK,如果有了就不用,配置JAVA_HOME到环境变量

  • 下载安装ANT,如果有就不用下载,配置ANT_HOME到环境变量 http://ant.apache.org/bindownload.cgi

  • 下载并解压OpenCV3.3 https://opencv.org/opencv-3-3.html

  • 下载并解压OpenCV3.3匹配的扩展模块 https://github.com/opencv/opencv_contrib/archive/3.3.0.zip

  • 下载并安装CMake https://cmake.org/download/

  • 下载并安装MinGW,编译生成,并且把C:\MinGW\bin配置到环境变量中去。

  • 下载并安装Android Studio,最新版本的SDK与NDK,配置环境变量ANDROID_NDK为安装好的NDK路径 C:/Users/zhigang/AppData/Local/Android/Sdk/ndk-bundle

CMake配置生成阶段

打开安装好的CMake-GUI,选择源码路径与编译后的保存路径。手动添加如下的实体变量。

然后点击【Configure】,选择【MinGW Makefile】,然后再选择使用toolchain-file,选择到 D:\opencv-3.3\opencv\sources\platforms\android\android.toolchain.cmake。然后点击【Finish】就会生成配置,生成之后uncheck选项WITH_CAROTENE然后点击【Generate】。如果一切都好,你就会看到你的Java相关选项的支持生成

编译OpenCV3.3源码生成Android SDK

如果你看到上面的java wrappers是NO,说明你没有正确生成配置,这样就不会生成OpenCV4Android 的Java SDK。只会生成一堆*.a与*.so文件而已。

运行完之后显示如下

编译OpenCV3.3源码生成Android SDK

生成SDK阶段

打开你的cmd命令行,然后修改本地目录如下:

编译OpenCV3.3源码生成Android SDK

然后输入mingw-make回车之后就会开始执行编译生成

编译OpenCV3.3源码生成Android SDK

最终生成完成之后,再次输入如下命令行执行install步骤:

编译OpenCV3.3源码生成Android SDK

完成之后到install目录即可看到

下面就可以导入到Android Studio中正常使用了。关于如何在Android Studio中配置与使用OpenCV4Android SDK参见这里: http://blog.csdn.net/jia20003/article/details/53126321

伏久者,飞必高;开先者,谢独早


关注【OpenCV学堂】

长按或者扫码下面二维码即可关注


以上是关于编译OpenCV3.3源码生成Android SDK的主要内容,如果未能解决你的问题,请参考以下文章

编译SqlCipher_android源码

Android源码开发记录-自定义系统服务和jar包生成

如何编译 netty 源码并导入android studio

android源码编译错误,求指点: out/target/product/generic/obj/lib/libcamera.so', nee

Android 10 根文件系统和编译系统:Android ROM镜像介绍

Android 反编译