前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Ndk and Opencv Development 1

Android Ndk and Opencv Development 1

作者头像
宅男潇涧
发布2018-08-01 15:58:47
6390
发布2018-08-01 15:58:47
举报
文章被收录于专栏:潇涧技术专栏潇涧技术专栏

从本节开始之后的几节将介绍关于Android NDK和OpenCV整合开发的内容,本节介绍Android NDK 和 OpenCV 整合开发的环境搭建以及人脸检测项目的运行测试。

在Samsung呆了段时间,还是学了不少东西的,主要做的任务是做Android NDK开发,也涉及到了OpenCV的内容,正好自己最近在开发XFace,这些知识都用得上,所以,想写几篇文章总结下这些知识。该系列内容均为原创,摘录的部分我都会引用提示,尊重版权嘛,嘿嘿,我保证这里有不少内容是搜索不到的独家秘笈哟!很多都是我的开发经验,嘿嘿。

该系列主要包括三大部分,分为下面三节来介绍,本节主要介绍第一部分

1.Android NDK 和 OpenCV 整合开发的环境搭建以及人脸检测项目的运行测试

2.Android NDK 的核心内容和开发总结

3.OpenCV 在 Android NDK 开发中的应用

[本文假设你是安装配置好了Java和Android SDK开发环境的,如果没有的话,可以看我以前在点点博客写的这篇文章,开发工具建议使用ADT,它更加方便,包含了Android SDK 和 安装了 ADT Plugin 的 Eclipse,何乐而不为呢?]

1. 下载Android NDK,解压即可

下载地址: Android NDK

如果不能下载(公司内部可能就不让访问或者访问很慢),可以查看这位作者的备用下载地址

2. 下载安装OpenCV2.6版本

下载地址:OpenCV首页 Linux平台的安装教程 Mac平台的安装教程

(1) 首先安装需要安装的工具和依赖包详见前面的Linux安装教程,Mac平台基本上只要安装CMake即可

(2) 使用CMake编译opencv源码,然后通过make安装opencv完成之后在/usr/local/include目录下便有了opencvopencv2两个目录,在/usr/local/lib目录下有很多的opencv相关的动态库,例如libopencv_core.dylib等等

代码语言:javascript
复制
cd <path-to-opencv-source>
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
3. 下载opencv_android_sdk 2.4.4版本,导入目录sdk/java作为Library Project (这个是OpenCV for Android)

下载地址:opencv-android on sourceforge

2.4.2相对比较旧了,有些新特性不支持,比如人脸识别(但是有人脸检测),不推荐下载这个;2.4.6相对比较新,但是可能导入的Library Project一直报错,所以如果不能解决就考虑使用2.4.4,只要Library Project导入进来没问题就行

关于opencv for android的目录结构的详细解释

4. 环境配置NDK和OpenCV环境

安装Android SDK(略过)和NDK,配置到系统PATH中

推荐配置,方便以后在终端执行adb和ndk-build等命令

代码语言:javascript
复制
export ANDROID_SDK_ROOT=/Users/hujiawei/Android/android_sdk
export PATH=${PATH}:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/tools
export ANDROID_NDK_ROOT=/Users/hujiawei/Android/android_ndk
export PATH=${PATH}:${ANDROID_NDK_ROOT}

使用ndk-build -v测试配置

代码语言:javascript
复制
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i386-apple-darwin10.8.0

如果是在Windows下,并且安装了Cygwin的话,输出就略有不同,它使用的不是系统内置的GNU Make

代码语言:javascript
复制
$ ndk-build -v
GNU Make 3.82.90
Built for i686-pc-cygwin
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

在Eclipse(Android Development Tool)的设置中,在 C/C++ -> Build -> Environment 中添加下面两个配置 添加这两项配置是为了后面进行各项关于路径配置的方便

代码语言:javascript
复制
NDKROOT = /Users/hujiawei/Android/android_ndk
OPENCVROOT = /Users/hujiawei/Android/opencv_sdk
5. 运行OpenCV for Android中的Sample项目FaceDetection

导入OpenCV for Android中的Library Project - OpenCV Library - 2.4.4

修改Library Project,改为前面导入到workspace中的Library Project

原有的配置默认该项目和Library Project是在同一个目录下,所以如果你以前接触过的话,会发现很多文章都是告诉你要把Library Project拷贝到和当前项目同一个目录下,其实是完全没有必要的!

修改C/C++ Build,将Build Command改成: ${NDKROOT}/ndk-build

Windows平台则不要删除末尾的.cmd,Linux和Mac平台则需要删掉.cmd

修改C/C++ General,将Paths and Symbols中的GNU CGNU C++配置的最后一个路径修改成 ${OPENCVROOT}/sdk/native/jni/include (这个路径保存的是opencv的native code头文件) 建议将这个配置导出到文件中,方便以后做类似项目时可以快速进行配置

修改jni目录下的Android.mk,将include OpenCV.mk这行改成:include${OPENCVROOT}/sdk/native/jni/OpenCV.mk 原有的配置是默认OpenCV的sdk文件夹和包含项目根目录的文件夹是同一个目录下

经过上面的配置之后,FaceDetection项目便没有问题了,打开jni目录下的cpp和h文件也不会报错了,当然,手机必须安装OpenCV Manager才能成功运行FaceDetection

运行人眼检测的示例程序

项目来源:http://romanhosek.cz/android-eye-detection-and-tracking-with-opencv/

该作者根据原有的人脸检测做了一个人眼检测,博文最后附有下载地址,我的Github上已经有了一份备份,配置方式和Face Detection一样

如果配置完了之后提示一个app_platform的警告的话,可以在Application.mk文件中添加 APP_PLATFORM := android-8

仔细理解上面的配置和操作,如果还有啥问题或者不清楚的可以查看OpenCV官方这篇入门文档:Manual OpenCV4Android SDK setup

两个项目运行结果:帮主,对不住啦,谁叫您长得这么帅呢!我的脸识别不了,只能用您老的啦!

OK!本节结束!如果觉得好,请看下节Android NDK 的核心内容和开发总结

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013/11/18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 下载Android NDK,解压即可
  • 2. 下载安装OpenCV2.6版本
  • 3. 下载opencv_android_sdk 2.4.4版本,导入目录sdk/java作为Library Project (这个是OpenCV for Android)
  • 4. 环境配置NDK和OpenCV环境
  • 5. 运行OpenCV for Android中的Sample项目FaceDetection
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档