编译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相关选项的支持生成

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

运行完之后显示如下

生成SDK阶段

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

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

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

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

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

最后,我之所以选择这张图像做封面,是因为编译OpenCV生成OpenCV4Android Java SDK是一件让人崩溃的事情,特别是在Windows平台下,但是值得所有学习与使用OpenCV的开发者挑战。最近事情比较多,公众号更新少了点,希望大家继续支持,我会持续更新!

原文发布于微信公众号 - OpenCV学堂(CVSCHOOL)

原文发表时间:2017-11-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏惨绿少年

KICKSTART无人值守安装

1.1 环境说明 [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [roo...

2890
来自专栏喵了个咪的博客空间

Otter-入门篇2(Manager安装配置)

Otter-入门篇2(Manager安装配置) ? 前言 上一节已经简单介绍了Otter的基本信息,本节我们就来开准备搭建一个我们自己的Otter环境,因为一个...

41811
来自专栏云原生架构实践

JHipster生成微服务架构的应用栈(三)- 业务微服务示例

这里选择Microservice application,所有自定义业务逻辑的微服务都可以选择这个类型。

3502
来自专栏云计算教程系列

如何在Debian 9上使用Apt安装Java

Java和JVM(Java的虚拟机)是许多软件所必需的,包括Tomcat,Jetty,Glassfish,Cassandra和Jenkins。

7742
来自专栏菩提树下的杨过

redis 学习笔记(6)-cluster集群搭建

上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,...

2155
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Keepalived和浮动IP设置高可用性HAProxy服务器

高可用性是系统设计的一个功能,允许应用程序在发生故障时自动重启或重新路由工作到另一个有能力的系统。在服务器方面,建立高可用性系统需要一些不同的技术。必须有一个可...

3483
来自专栏日常分享

Java 以及JEE环境快速搭建

  博主最近找了一个Java Development的实习,加上上个月末的考试周,所以很久没有更新博客。   上了一周的班,还没有在熟悉项目的阶段。

1881
来自专栏大魏分享(微信公众号:david-share)

对,俺差的是安全! | 从开发角度看应用架构18

在Gartner定义的“第三平台”盛行的年代,html5大行其道。所以http方式访问的应用很多。因此,谈到应用的安全,我们先要了解http的几种认证方式。

971
来自专栏Hadoop实操

HDFS添加 NFS Gateway 角色实例启动失败问题及解决办法

昨天登录公司测试集群的时候,发现HDFS存在告警信息,查看详细信息,发现 NFS Gateway 进程退出,尝试重启该角色实例,执行重启操作后,报如下异常:

1.6K4
来自专栏pangguoming

使用Spring Cloud Security OAuth2搭建授权服务

前言:  本文意在抛砖引玉,帮大家将基本的环境搭起来,具体实战方案还要根据自己的业务需求进行制定。我们最终没有使用Spring Security OAuth2来...

9097

扫码关注云+社区

领取腾讯云代金券