Android学习六---OpenCV for android samples
搭建好OpenCV4Android环境后,就要着手开发自己的应用了。对于一个没有OpenCV基础的人来开发OpenCV应用确实有点难度,不过我们可以从samples里学起,结合javadoc和万能的网络开发一个简单的应用应该不难。为了简单,我们采用的是纯粹的java API不涉及JNI,等对这一部分熟悉之后再来采用JNI实现。
首先对OpenCV的android应用来个感性的认识,把samples中的image-manipulations安装到手机上(手机上先安装好OpenCV manager 和binary pack见上节),然后把menu调出来,试一试Histograms,Canny ,sobel 等菜单,会发现应用对摄像头捕获的图像实时的处理,在屏幕的一个小的窗口中输出处理结果图。
这样一来我们的重点就确定了,简单的界面设计,数据存储,显示和算法的应用是关键。而算法的应用就通过调用一系列的API来实现。我们就围绕下面几个问题来进行
1.操纵相机,取出图像进行处理
首先必须要知道OC(OpenCV)是怎么操纵相机的,如何从图像流中取出一帧帧来进行处理?
解决:通过opencv官网的例子了解
JAVA 包含OpenCV java包。即通过非同步的方式来进行应用开发,这个是官网强烈推荐的方式,因为可以减少代码量等优势,主要是用OpenCV Manager方式来获取OpenCV库(已经在目标系统安装好了)
1.1 File -> Import -> Existing project in your workspace.

1.2. Project -> Properties -> Android -> Library -> Addselect OpenCV Library - 2.4.9.

1.3 一个简单的程序
public class Sample1Java extends Activity implements CvCameraViewListener {
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
@Override
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
}
...
}
OnManagerConnected callback会在UI线程中调用,在使用OpenCV调用或者载入OpenCV支撑的本地库前一定要先包含这一调用。在OpenCV成功初始化后载入本地库,默认的BaseLoaderCallback会把应用程序上下文当成是Activity,所以在初始化失败时会调用Activity.finish()。要重写这一行为,就必须重写finish()这一方法。
2.要了解处理的程序是写在哪一部分的,如何达到只对这一部分修改,而其他部分不变?
官网上的samples,ImageManipulationsActivity采用的是OpenCV java API来写的,通过一个hello opencv知道整个流程(虽然这个程序没有运行成功),
知道应该修改的是OnCameraFrame,对每帧图像进行处理。
3.如何实现一个简单基于连通域分析的OpenCV文本定位算法,把算法嵌入应用程序中?
算法流程,对彩色的帧图像进行二值化,二值化之后进行连通域分析,分析每个连通域的情况,对连通域进行分析,去除一些不符合要求的,对剩下的连通域采用形态学图像处理,连成一个文本行,在对文本行进行滤除,最后得到文本的区域位置。
4.如何对错误进行调试使最终实现运行?
采用同Android相同的方式进行调试,如logcat和端点,一系列快捷键的使用如F5,F6,F7,F8 和ctrl+R等。
Android学习六---OpenCV for android samples的更多相关文章
- android学习五---OpenCV for android环境搭建
学习android的目的是想在手机上实现计算机视觉的算法.一般算法的研究都是在Matlab上进行,但是手机平台没有那么多的计算资源,用matlab显然是不太现实的.而OpenCV是基于C++语言编写的 ...
- android学习点滴一:android环境的搭建
东一点西一点,很多时间都浪费了.是该系统性的做好自己的东西了. <android学习点滴一:android环境的搭建> [环境变量]变量名:JAVA_HOME变量值:C:\Java\jdk ...
- android 学习六 构建用户界面和使用控件
1.常用Android控件最终都会继承自View类 2.ViewGroup是一些布局类列表的基类,包括View和ViewGroup 3.构造界面的三种方法 a.完全使用代码(太灵活,而不好维护) ...
- openfire Android学习(六)----总结
Xmpp的一些方法整理到一个工具类中了 XmppConnection.java [java] view plaincopy [java] view plaincopy import java.io.B ...
- Android:Android Studio导入OpenCV(Android项目)
在使用OpenCV之前,Android必须先下载ndk,因为OpenCV使用了native代码,这里建议Android Studio创建C++项目来写OpenCV的内容 1.首先在官网下载OpenCV ...
- android学习十二(android的Content Provider(内容提供器)的使用)
文件存储和SharePreference存储以及数据存储一般为了安全,最好用于当前应用程序中訪问和存储数据.内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能 ...
- Android学习十二---在android上实现图像匹配
一.效果图及功能描述 效果图 点击ShowImg后 点击match,然后点击showmatch,可以不断点击showmatch. 主要功能描述:显示在SD卡上已经存在的图片test.jpg,根据图片在 ...
- android学习十四(android的接收短信)
收发短信是每一个手机主要的操作,android手机当然也能够接收短信了. android系统提供了一系列的API,使得我们能够在自己的应用程序里接收和发送短信. 事实上接收短信主要是利用我们前面学过的 ...
- android学习一(了解android)
声明:android学习文件中面的全部内容为都是整理来自第一行代码Android.在接下来的文章里我就不在进行反复的声明. 想看原版的能够买书看看.或者去作者的博客http://blog.csdn.n ...
随机推荐
- MVVM 实战之计算器
MVVM 实战之计算器 android DataBinding MVVM calculator Model View 布局文件 Fragment ViewModel 结束语 前些日子,一直在学习基于 ...
- mvn命令若干:
mvn命令若干: mvn -h,不会用时,可寻求帮助. mvn clean compile,将.java类编译为.class文件: mvn clean test, 执行单元测试.本质上,还是执行了一个 ...
- Tuning 05 Sizing other SGA Structure
Redo Log Buffer Content The Oracle server processes copy redo entries from the user’s memory space t ...
- Oracle Tuning 总括
oracle tuning 分为3个阶段 1. application 调优阶段, 包括设计的调优, SQL语句调优, 管理权限等内容, (这部分是我的重点) (调优人员 application de ...
- 我的直播demo
推流工具: ffmpeg 接收/转发流工具: nginx-rtmp 在线播放工具: video.js -------------------------------------- demo地址: ht ...
- CSS3自定义滚动条样式 -webkit-scrollbar (一)
Webkit支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式.当然,兼容所有浏览器的滚动条样式目前是不存在的. 滚动条的组成: ::-webkit-scroll ...
- 支持IE低版本的上传 大文件切割上传 断点续传 秒传
1. http://files.cnblogs.com/files/blackice/UploadDemo.rar 此demo是使用的 swfupload 2.http://download.csdn ...
- 【vijos】1789 String(组合计数+奇怪的题)
https://vijos.org/p/1789 我yy了一下发现我的方法没错啊,为嘛才80分..(后来看了题解,噗,还要判断k>n和k=1的情况QAQ 当k=1的时候,答案显然是m^n 当k& ...
- 设置grid高度
$("#jqxSalaryCalculation").jqxGrid({ height: $("#jqxTree").height() - 73 });
- LeetCode 第 231 题 (Power of Two)
LeetCode 第 231 题 (Power of Two) Given an integer, write a function to determine if it is a power of ...