您的位置:首页 > 移动开发 > Android开发

OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程

2015-12-24 16:25 615 查看
好久没来科创了,现在荒凉好多啊- -。 发一篇教程提高下访问~

原文在我博客

OpenCV的配置一直是个最麻烦的问题,2.4.6以后windows环境下 vs配置我就出错好几十次,来来回回弄了好多遍

之前在实验室弄,为了配合其他人才用的vs2010,现在蹲宿舍干了,改用更简洁的Qt了,qt配置OPENCV方便很多,几句话就搞定了。



人机交互的作业是写一个以图搜图的demo,之前虽然在实验室干过类似的东西,但是现在又得用安卓配置OpenCV了,又是麻烦了我一整天。前几天终于成了,记录一下。

配置环境的过程参考了http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool

demo的编写参考了 /article/1652124.html

由于其resume后图片会消失,我做了点改动

1.准备工作

首先安装好Android Studio,要自带所有开发套件的,感觉AS比Intellij+ ADT ,eclipse系列都要好,虽然也想过Qt开发安卓,但是太小众了,不好跟人交流。

然后,保证所有环境变量配置正确,比如 JDK ADT JRE等等等等。

下载 OpenCV Android SDK ,我下的2.4.9,鉴于目前3。0无安卓sdk,2.4.10我也不敢用了,并将下载的OpenCV-2.4.9-android-sdk中的sdk文件夹中的java文件夹 重命名为 opencv

2.创建你的安卓项目(使用gradle,非gradle的教程网上资料很多)在你的工程根目录下new一个文件夹,名字任意比如libraries ,将刚才的opencv文件夹整个复制到新建的libraries里面。

3. 在android studio中,在opencv的根目录处新建一个 build.gradle文件,复制以下代码

复制代码

注意其中的versionName 改为你自己下载的OpenCV的版本号,compileSdkVersion和minSdkVersion和targetSdkVersion要和你..\工程名\app\目录下的build.gradle中的设置一样



dependencies {

classpath 'com.android.tools.build:gradle:1.0.0'
中的gradle版本要和你工程根目录下的build.gradle(不是app下的)中的版本一样,

关于gradle文件的解释如下

http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html

图片:20141218225157805.jpg



4.在工程根目录的 settings.gradle 中添加以下代码,改动之后会提示你需要sync,点sync now

include ':libraries:opencv'

5.在你需要用到opencv的model的/src/main文件夹下新建一个jniLibs文件夹。将刚才下载的OpenCV-2.4.9-android-sdk/sdk/native/libs中的文件拷贝进来。 就是各种.so .a文件,相当于win下的dll文件,程序靠引用这些动态链接库工作。另外一点就是,libs下的文件夹不一定要全部复制,根据你运行的平台复制对应的文件夹即可,对应关系如图,也跟之后的OpenCV Manager有关 (版本号自行对应)

图片:20131124131308687.png



6.在刚才..工程名\app\ 目录下的build.gradle 中的dependency下添加以下代码

compile project(':libraries:opencv')

该sync now的都sync 就可以开始编写你的程序了

7.灰度化demo

首先看下opencv官网的流程图http://docs.opencv.org/platforms/android/service/doc/UseCases.html

图片:20131124130504437.png



从2.4之后,为了和Android的系统架构保持同步,准确说是吸收Android框架层的优点,引入了OpenCV Manager的概念,其本质就是一个Service,用来管理OpenCV动态链接库(即你之前拷贝的那个jniLibs里的东西)。

APP在运行时会首先检查OpenCV Manager存在不,如果不存在则会提示安装。如果存在,就会连接这个服务,进一步初始化加载OpenCV库。 所以第一步就是先在你的目标手机上安装 OpenCV Manager ,apk在 ..\OpenCV-2.4.9-android-sdk\apk 下版本对应之前的图。

具体的代码跟/article/1652124.html 没什么不同,这里只提两点。

复制代码

以上截取官方文档http://docs.opencv.org/platforms/android/service/doc/BaseLoaderCallback.html

任何opencv项目都需要这两个步骤,在initAsync 加载OpenCV Library 所有其他的操作必须在这一步成功之后才能执行。

我最后的程序被ADT自带的虚拟机坑了好久,再次告诫各位不要用***D,只要不用***D应该都会成功~

图片:20141218233353918.jpg



附demo代码:

复制代码

[1211于2014-12-22 20:17编辑了帖子]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: