android学习五---OpenCV for android环境搭建
学习android的目的是想在手机上实现计算机视觉的算法。一般算法的研究都是在Matlab上进行,但是手机平台没有那么多的计算资源,用matlab显然是不太现实的。而OpenCV是基于C++语言编写的,可用于开发实时的图像处理、计算机视觉以及模式识别程序。
一:需要的工具
在前面的章节中,我们已经搭建好android,现在我们需要android支持OpenCV,需要哪些工具呢?首先android是基于java开发的,而Opencv是基于C++,所以这两者之间需要工具来相互支持。这一工具是android NDK,而我们需要把一些OpenCV库编译成.so动态库(linux下的动态链接库),需要Cygwin,而在eclipse下开发C++需要安装CDT。另外最重要的是需要计算机视觉算法的一些API,这就需要安装OpenCV4Android。
1.Android NDK
1.1. 基本介绍
Android NDK(Native Development Kit )是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。Google仅在极少数情况下建议使用NDK,有如下使用场景:
- 必须提高性能(例如,对大量数据进行排序)。
- 使用第三方库。举例说明:许多第三方库由C/C++语言编写,而Android应用程序需要使用现有的第三方库,如Ffmpeg、OpenCV这样的库。
1.2 安装
下载地址:https://developer.android.com/tools/sdk/ndk/index.html
下载的版本是android-ndk-r10c-windows-x86_64.exe。
环境变量:将下载的文件解压,比如我的目录是D:\android-ndk-r10c,将这一目录放在系统变量的Path里头。
测试:在cmd下输入NDK-build,如果出现下面的界面表示安装成功
2.Cygwin (可以不用安装,官方教程上面不需要)
用途:在windows上运行类Unix系统。
3.CDT
一般安装eclipse时都会安装好CDT
4.OpenCV4Android
下载地址:http://sourceforge.net/projects/opencvlibrary/files/opencv-android/
教程:http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#
官方教程上的工具
JDK
Android SDK and NDK
Eclipse IDE
ADT and CDT plugins for Eclipse
二、OpenCV4Android
下载完,解压,
2.1 目录结构如图
OpenCV-2.4.9-android-sdk |_ apk | |_ OpenCV_2.4.9_binary_pack_armv7a.apk | |_ OpenCV_2.4.9_Manager_2.18_XXX.apk | |_ doc |_ samples |_ sdk | |_ etc | |_ java | |_ native | |_ 3rdparty | |_ jni | |_ libs | |_ armeabi | |_ armeabi-v7a | |_ x86 | |_ LICENSE |_ README.android
sdk folder: 针对andriod的OpenCV API和库:
sdk/java folder: 一个包含 Android 库 的Eclipse 项目,能够 提供OpenCV java API,可以导入eclipse工作空间;
sdk/native folder: 包含 OpenCV C++ headers (for JNI code) 和 native Android libraries (*.so and *.a) 可用于 ARM-v5, ARM-v7a and x86 架构;
sdk/etc folder :contains Haar and LBP cascades distributed with OpenCV.
apk folder :包含用于各个手机架构的OpenCV Manager API,要在手机上跑OpenCV的程序必须安装,这个API能够使程序调用OpenCV库.
samples :包括可安装在手机上的一些android应用程序包括源码,可导入Eclipse。
doc:不用说啦,就是OpenCV的帮助文档了。
2.2 OpenCV Manager API
基于android服务的解决方案,能够提供为OpenCV开发者提供各种好处包括使得开发的APK更加紧凑,因为所有的应用都是使用相同的binaries,所以没必要每个程序都保存一份等等。
2.3 导入OpenCV库和例子到worksapce
file import 选择目录,一定要选择OpenCV-2.4.9-android-sdk 这个根目录,或者加上sdk--java这个目录。一定要记得导入OpenCV library,否则会出现OpenCV函数各种红线。
2.3 选择C/C++的编译器
在这些samples中,有些是基于OpenCV java API如image-manipulations,OpenCV C++ API如face-detection。选择face-detection,选择project-properties,C/C++ Build ,首先设置Environment,NDKROOT,value为NDK解压的目录,然后设置Build command为${NDKROOT}/ndk-build.cmd .
2.4 运行OpenCV例子
1.在手机上运行
选择合适的OpenCV Manager,插上手机,在cmd上输入命令adb shell getprop ro.product.cpu.abi,就可以看到手机的架构了如图
在手机上装好OpenCV Manager和OpenCV binary pack(在apk目录下可以找到)。然后像之前一样运行,就可以在手机上看到效果了。
2.在模拟器上运行
开好模拟器
在cmd下使用命令adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.9_Manager_2.18_armv7a-neon.apk安装OpenCV Manager。
运行samples,由于没有摄像头,运行效果如图。
参考资料:http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html
android学习五---OpenCV for android环境搭建的更多相关文章
- 零基础Android学习笔记-01 安卓开发环境搭建
安卓开发环境搭建. 1.首先准备JDK,从官网找到JDK下载地址,原来做.NET不熟悉JAVA,干脆用最新的,下载了JDK 1.7的版本.原来装过1.5还要配置环境变量什么的.但1.7好像很给力,装好 ...
- Android学习六---OpenCV for android samples
搭建好OpenCV4Android环境后,就要着手开发自己的应用了.对于一个没有OpenCV基础的人来开发OpenCV应用确实有点难度,不过我们可以从samples里学起,结合javadoc和万能的网 ...
- android学习点滴一:android环境的搭建
东一点西一点,很多时间都浪费了.是该系统性的做好自己的东西了. <android学习点滴一:android环境的搭建> [环境变量]变量名:JAVA_HOME变量值:C:\Java\jdk ...
- Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevTools,Git使用教程,Github入门,界面设计介绍
系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(L ...
- 【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建
Xamarin.Android 入门之:Xamarin+vs2015 环境搭建 一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客 ...
- Android开发使用控件入门--环境搭建
Android开发使用控件入门--环境搭建 软件名称(,梦,,想.CAD ,控件) 1. 环境搭建: 3 1.1. 安装Eclipse 3 1.2. 下载JDK 3 1.3. 下载Android S ...
- ubantu16.04+mxnet +opencv+cuda8.0 环境搭建
ubantu16.04+mxnet +opencv+cuda8.0 环境搭建 建议:环境搭建完成之后,不要更新系统(内核) 转载请注明出处: 微微苏荷 一 我的安装环境 系统:ubuntu16.04 ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...
- Java学习笔记【一、环境搭建】
今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...
随机推荐
- 解决:eclipse配置Database Connections报错Communications link failure Last packet sent to the server was 0 ms ago
网上各式各样的问题,不过我的问题在于我开了Proxifier,导致链接localhost的时候被拦截...把Proxifier关了就好了 以后遇到这种问题.连不上数据库啊,连不上本地的服务器啊,先检查 ...
- Jquery js框架使用
jquery 众所周知 ,强大的 js框架 自己使用的一些笔记 //1.json格式定义方法 var product_obj={ check_init:function(){ ...
- javaweb 压缩文件图片
压缩图片分辨率 ,根据 url 和 根据 file /** * <p>Title: thumbnailImage</p> * <p>Description: 根据 ...
- java调用c#开发的webservice
使用jdk自带的wsimport工具生成代理类 c:\Program Files\Java\jdk1..0_121\bin>wsimport -keep -encoding utf- -d d: ...
- Jquery学习笔记(5)--jquery1.6中的.prop()和.attr()异同
jquery1.6中的.prop()和.attr()异同 最近在iteye的新闻中看到jQuery已经更新到了1.6.1.和之前版本的最大变化是增加了.prop方法.但是.prop()方法和.attr ...
- 布局溢出屏幕解决-easyui
body样式easyui-layout 再加个滚轮
- 第一百四十八节,封装库--JavaScript,菜单切换
第一百四十八节,封装库--JavaScript,菜单切换 首先在封装库封装点击切换方法 /** dian_ji_qie_huan()方法,设置点击切换,将元素设置成点击切换,也就是点击目标元素后,循环 ...
- Collection 和 Collections的区别?
Collection 和 Collections的区别? 解答:Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List:Collections是 ...
- 微软2016校园招聘4月在线笔试 hihocoder 1289 403 Forbidden
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 Little Hi runs a web server. Sometimes he has to deny acces ...
- 蓝桥杯 第三届C/C++预赛真题(2) 古堡算式(数学题)
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久, ...