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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_046f56754c612ac.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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_c172c499d4bcc5b.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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_8b8de317bc26c15.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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_3bac4796e1224c7.jpg)
附demo代码:
复制代码
[1211于2014-12-22 20:17编辑了帖子]
原文在我博客
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文件,复制以下代码
复制代码
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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_046f56754c612ac.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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_c172c499d4bcc5b.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
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_8b8de317bc26c15.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 没什么不同,这里只提两点。
复制代码
任何opencv项目都需要这两个步骤,在initAsync 加载OpenCV Library 所有其他的操作必须在这一步成功之后才能执行。
我最后的程序被ADT自带的虚拟机坑了好久,再次告诫各位不要用***D,只要不用***D应该都会成功~
图片:20141218233353918.jpg
![](http://bbs.kechuang.org/attachment/1412/thread/134_20319_3bac4796e1224c7.jpg)
附demo代码:
复制代码
相关文章推荐
- Android中drawText详解
- Android开发——Android Studio中配置及使用OpenCV示例
- Android Studio使用OpenCV的配置方法
- Android Volley的基本用法(一)
- android android.mk中:= ?= +=之间的区别
- 使用android自带的SwipeRefreshLayout实现下拉刷新
- Android性能优化--小小攻城狮的成长之路
- 【Android】在Android studio中使用retrol lambda,gradle构建;RxJava使用建议,优缺点
- Android版添加phonegap--InAndroid视频播放功能插件教程
- Android多线程之Handler
- Android5.X (三) : CardView
- Android NDK Log信息打印
- Android黄色警告汇总
- Android adb.exe程序启动不起来 具体解决方法
- Android使用动画的注意事项
- Android PullToRefresh 完全解析
- android view点击事件无效 OnClickListener
- Android Ant打包笔记
- 如何设置Android中控件的颜色透明度
- android studio ignore 文件