2013年01月22日
如何将OpenCV应用于Android?
最近在看opencv的东西,突然想到是否可以用android手机。。。百度到了一篇比较好的文章,转载如下
----------------------------------------------------------------------
在网上看了很多教程和官方http。://opencv.willowgarage.com/wiki/Android提供的关于如何在Android中使用OpenCV的教程,一步一步来,最后总会出现一些问题,要么APK安装失败,要么在运行过程中突然报错撤出。和同学们一起摸索了一段时间后,终于成功了,在这里做个总结。最重要的问题是,项目中每个文件夹和文档的位置都应该放置正确,目标机的CPU架构应该设置正确。以下是设备的详细过程。
Android开发环境
1.Sun JDK 6
浏览http://www.oracle.com/technetwork/java/javase/downloads/index.在这里安装html和JDK
注:不要使用OpenJDK,Android SDK支持Sun JDK
2.Android SDK
浏览http://developer.android.com/sdk/index.获得androidhtml sdk,若选择Windows安装文件,则需安装32bit。 JRE。
3.Android SDK部件
l Android SDK Tools, revision 12或是更新
l AndroidSDK平台 2.2, API 8, revision 2(also known as Java API)
OpenCV就是这样 Java 最低平台API支持,OpenCV默认发布Android 2.2
4. Eclipse IDE和ADT plugin for Eclipse
浏览http://www.eclipse.org/downloads/下载Eclipse并解压。
打开Eclipse,选择Help->Install New Software菜单,但是点击Add按钮,在Add 在Repository对话框中输入Name栏。ADT Plugin",Location栏输入https://dl-ssl.google.com/android/eclipse/,但是之后点击OK。Available 在Software对话框中选择所有的选择框,然后一路上next,直到finish,当ADT安装完成后,Eclipse就可以重启了。
5. Android NDK
浏览http://developer.android.com/sdk/ndk/index.最新的Androidhtml下载 NDK,这是一个ZIP解压包,只需将其解压到某一路径即可,例如"F:\android-ndk-r6b-windows\android-ndk-r6b",然后将该路径添加到系统的环境变量PATH中。
6. Cygwin
浏览http://cygwin.com/index.最新的Cygwinhtml下载,最好安装所有的Cygwin部件。假设安装在“C:\cygwin"下,将"C:\cygwin\bin“添加到系统环境变量PATH中,为方便在命令行下调用Androidroid。 NDK,找到"C:\cygwin\home\(您的登录名称)“打开文件”.bash_profile",在文件的底部加入以下两行:
NDK=/cygdrive/f/android-ndk-r6b-windows/android-ndk-r6b
export NDK
这样就可以在命令行中使用命令行。 "$NDK/ndk-build" NDK以这种形式被调用。
二、OpenCV
首先在httpp下载。://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.3.1/opencv包已预编译。
将下载的包解压到某一路径(尽量不带空格),例如“F:\OpenCV-2.3.1-android-bin"
如何在Android系统中使用OpenCV?
有两种方法(重点是后一种):
使用OpenCVV Java API。
OpenCV安装路径"F:\OpenCV-2.3.1-android-bin"下面有两个文件夹,如下图所示。
将文件夹"OpenCV-2.3.1"将您的Eclipse办公空间所在的目录复制到您的项目的最后一个目录中,然后导入到办公空间,然后在Package中。 在Explorer中选择您的项目,单机右键在弹出菜单中选择Properties,然后在弹出的Properties窗口左侧选择Android,接着点击右下角的Add按钮,选择OpenCV-2.3.点击OK,如下图所示:
这个时候,进行你的项目树,你可以看到一个新的OpenCV-2.3.1_src目录,如下图所示,OpenCVV正确添加。 Java API,否则,您将放置OpenCV-2.3.1目录路径不正确。
然后你可以在你的Java源文件中导入OpenCV的API包,并使用OpenCV。 API了,OpenCV API包的方法如下:
Org.opencv.(OpenCV模块名).(OpenCV类名)
比如:
Org.opencv.core.Mat
使用JNI编写CNI。 通过Androidroid,OpenCV代码 建立NDK动态库(.so)
建立一个新的办公空间,例如"TestOpenCV",在Window->Preferences中设置Androidoid 如图所示,SDK路径。
接着,新建了一个Android项目,Build 选择Android2.2的Target命名为“HaveImgFun"活动名称改为HaveImgFun,Package 填写come的name.testopencv.haveimgfun,最后点击finish。
就像使用OpenCVV一样 Java API将OpenCV-2.3.1将文件夹复制到与办公空间相同的目录中;另外,将"F:\OpenCV-2.3.1-android-bin\samples"下面的includeOpenCV.在项目HaveImgFun的同一级目录中,mk文件拷贝如图所示:
(由于OpenCV-2.3.3,上面每个文件夹和文件的放置非常重要。.OpenCV1下.在mk中有许多指定的相对路径,如果不这样放置,在NDK生成动态库时,可能会报告文件或文件夹无法找到的错误)
选择Package 您的项目在Explorer中,右键选择new->folder,创建一个新的名为jni的文件夹来存储你的c//c 代码。
接着将res->layout下的main.xml的内容改为以下内容:
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com