【一个灰度化的demo 】OpenCV2.4.9 For Android + Android Studio (with gradle)
来源:互联网 发布:淘宝改了名称搜不到 编辑:程序博客网 时间:2024/05/22 17:47
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的编写参考了 http://blog.csdn.net/yanzi1225627/article/details/16917961
由于其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文件,复制以下代码
apply plugin: 'android-library' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { minSdkVersion 13 targetSdkVersion 21 versionCode 2490 versionName "2.4.9" } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] aidl.srcDirs = ['src'] } } }
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
4.在工程根目录的 settings.gradle 中添加以下代码,改动之后会提示你需要sync,点sync now
- include ':libraries:opencv'
另外一点就是,libs下的文件夹不一定要全部复制,根据你运行的平台复制对应的文件夹即可,对应关系如图,也跟之后的OpenCV Manager有关 (版本号自行对应)
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
从2.4之后,为了和Android的系统架构保持同步,准确说是吸收Android框架层的优点,引入了OpenCV Manager的概念,其本质就是一个Service,用来管理OpenCV动态链接库(即你之前拷贝的那个jniLibs里的东西)。
APP在运行时会首先检查OpenCV Manager存在不,如果不存在则会提示安装。如果存在,就会连接这个服务,进一步初始化加载OpenCV库。 所以第一步就是先在你的目标手机上安装 OpenCV Manager ,apk在 ..\OpenCV-2.4.9-android-sdk\apk 下版本对应之前的图。
具体的代码跟http://blog.csdn.net/yanzi1225627/article/details/16917961 没什么不同,这里只提两点。
public class MyActivity extends Activity implements HelperCallbackInterface{private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); // Create and set View mView = new puzzle15View(mAppContext); setContentView(mView); } break; default: { super.onManagerConnected(status); } break; } }};/** Call on every application resume **/@Overrideprotected void onResume(){ Log.i(TAG, "Called onResume"); super.onResume(); Log.i(TAG, "Trying to load OpenCV library"); if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mOpenCVCallBack)) { Log.e(TAG, "Cannot connect to OpenCV Manager"); }}
以上截取官方文档http://docs.opencv.org/platforms/android/service/doc/BaseLoaderCallback.html
任何opencv项目都需要这两个步骤,在initAsync 加载OpenCV Library 所有其他的操作必须在这一步成功之后才能执行。
我最后的程序被ADT自带的虚拟机坑了好久,再次告诫各位不要用AVD,只要不用AVD应该都会成功~
- 【一个灰度化的demo 】OpenCV2.4.9 For Android + Android Studio (with gradle)
- OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
- OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
- OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
- Android Studio——配置OpenCV的方法及灰度化demo范例
- Gradle for Android studio 的基本认识(一)
- Error running demo: This version of Android Studio is incompatible with the Gradle Plugin used.
- Android Studio里面的sync project with gradle files
- Gradle for Android 第一章:初识Gradle和Android Studio(上)
- Gradle for Android 第一章:初识Gradle和Android Studio(下)
- Gradle For Android—从Gradle和Android Studio开始
- 解决一个Android Studio gradle的小问题
- Android Studio配置Gradle 配置的一个坑
- android studio的gradle问题
- android studio,gradle的问题
- Android studio的gradle配置
- android studio 的gradle命令
- Android Studio的Gradle解析
- poj 1860 SPFA
- 黑马程序员--------java IO流 Reader、Writer、InputStream、OutputStream
- CSS的定位之position
- 根据字段查询包含该字段的表名
- 查找单链表中间值
- 【一个灰度化的demo 】OpenCV2.4.9 For Android + Android Studio (with gradle)
- linux-磁盘分区
- 改变结构体的值
- Uva 437-The Tower of Babylon(DP)
- 截屏(带鼠标)
- [C++] 随机数之初见
- UVA - 156 Ananagrams
- hdu 4893 欧拉函数
- 记一个小软件的开发