2013年01月22日

2023-05-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