OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类,同时提供了Python、Ruby、MATLAB等语言的接口,实现了和计算机视觉方面的很多通用算法百度百科 词条:opencv

  • 目前公司项目的新功能用到图片识别功能,在了解到过程中知道了OpenCV这个神器,因此学习了基础,特地来记录,防止以后忘记。后期将进一步完善其学习记录。更多内容欢迎访问我的个人网站

我用到东西如下:

下载OpenCV4Android

  • 将压缩包解压后可以看到有以下文件,其中使用红线包裹的文件夹是非常重要的文件夹,后面要用到

  • apk 保存的是一些基础包,要根据你的手机芯片的架构安装合适的版本,否则将会提醒你安装,以至于各种错误,所以在之前,还是老老实实安装吧。
  • samples 保存的一些demo,可以根据自己的需要进行学习
  • sdk 我们开发所用的一些工具

注意:我在学习的过程,直接在手机安装会报解析安装包错误,以至于无法安装,那么这里需要连接开发者模式,使用adb进行安装,命令: adb install ****.apk 就可以安装成功了。

创建工程

  • 创建一个普通的安卓工程即可,然后我们需要导入Module

  • 导入Module 这个东西就是上图中的java文件夹,选择File--> new --> import Module 选择步骤一图中红色框框圈起来的JAVA文件夹即可,然后在文件栏中就可以看到这个新的Module了,后面的320指的是版本号,每个人可能不一样

  • 导入Module之后我们需要配置一下,在File--->Project Structure菜单中选择该Moudle作为库依赖即可,如下操作

注意:在某些情况下,再倒入Module的情况下,会出现报错的情况,这是修改Module的编译版本和目标版本和APP的保持一致,然后重新Sync即可.

导入库文件

  • 这里需要导入so库等文件,文件就在步骤一图的用红线圈中的libs文件夹里面,选中里面的所有文件,注意是选中lib里面所有的文件,不是选中libs文件夹。

  • 在项目中,选app工程,在src/main目录下新建jniLibs文件夹,将上面选中的文件全部复制到其中。

  • 为了确保工程创建成功,我们可以重新reBuild一下工程

载入Opencv

  • 我们在Activity的回调函数中异步初始化OpenCV,代码很简单,一句话加上一个回调。
    @Override
protected void onResume() {
super.onResume();
//载入OpenCv初始化引擎,并载入库,可以看到initAsync,使用的是异步加载
//因此需要提供回调函数
//OpenCVLoader.OPENCV_VERSION_3_2_0指的是版本号,请根据你自己的版本选择
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0, getApplicationContext(), mLoaderCallback);
}
//OpenCV库加载并初始化成功后的回调函数
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
// TODO Auto-generated method stub
switch (status) {
case BaseLoaderCallback.SUCCESS:
Log.e("OpenCv", "成功加载");
break;
default:
super.onManagerConnected(status);
Log.e("OpenCv", "加载失败");
break;
}
}
};

使用OpenCV

  • 我们来使用OpenCv做一个简单灰度图
  • 首先是布局文件,就一个简单的图片
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img"
android:layout_width="600px"
android:layout_height="1000px"
android:layout_centerHorizontal="true" />
</RelativeLayout>
  • 具体代码如下
        Mat rgbMat = new Mat();
Mat grayMat = new Mat();
//从资源中获取图片
srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.psb);
//构建灰度RGB图片
grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565);
//将资源图片转化为Mat类资源
Utils.bitmapToMat(srcBitmap, rgbMat);//convert original bitmap to Mat, R G B.
//将图片灰度化
Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
//将灰度Mat转换为灰度BitMap资源
Utils.matToBitmap(grayMat, grayBitmap);
//设置显示
((ImageView)findviewById(R.id.img)).setImageBitmap(binaryBitmap);
  • 效果图

当然还有更多的使用方法没有再此详细阐述,可以再网上寻找一些资源,Mat是非常强大的一个类,好好玩吧。

Android For OpenCV的环境搭建的更多相关文章

  1. Android下OpenCV的环境搭建

    目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...

  2. 一、Android学习第一天——环境搭建(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第一天——环境搭建 Android 开发环境的搭建 ...

  3. Android NDK r8 windows环境搭建

    Android NDK r8 windows环境搭建 一.默认基础环境为已经完成Android开发环境的搭建 需要的软件及插件 1. JDK-7u25 2. Eclipse 3. Android SD ...

  4. android 5.0开发环境搭建

    Android 5.0 是 Google 于 2014 年 10 月 15 日发布的全新 Android 操作系统.本文将就最新的Android 5.0 开发环境搭建做详细介绍. 工具/原料 jdk- ...

  5. Android下NDK开发环境搭建

    Android下NDK开发环境搭建 1.     AndroidNDK安装与配置 1.1  NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...

  6. win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

    win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...

  7. android Jni NDK开发环境搭建及其简单实例的编写

    android  Jni  NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...

  8. OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建

    # OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-hom ...

  9. IntelliJ OpenCV 开发环境搭建

    Windows下的IntelliJ + OpenCV开发环境搭建 基于IntelliJ IDEA 15 和 OpenCV 3.1.0 1. 在OpenCV官网下载OpenCV安装程序,双击解压到目标目 ...

随机推荐

  1. LR测试

    LoadRunner种预测系统行性能负载测试工具通模拟千万用户实施并发负载及实性能监测式确认查找问题LoadRunner能够整企业架构进行测试通使用 LoadRunner企业能限度缩短测试间优化性能加 ...

  2. 【Python 】selenium 简介

    从源码中可以找到selenium 2.48.0支持的浏览器如下: [python] view plain copy Firefox Chrome ChromeOptions Ie Edge Opera ...

  3. 线程池ThreadPoolExecutor类的使用

    1.使用线程池的好处? 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 第三:提高线程的可管理性 ...

  4. Oracle-07:别名,去重,子查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 依旧提供数据库脚本供操作 create table DEPT ( deptno ) not null, dna ...

  5. SSM-Spring-19:Spring中JdbcTemplate

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Spring自带一个ORM持久化框架JdbcTemplate,他可以说是jdbc的加强版,但是对最细微的控制肯 ...

  6. 解决WordPress用户名密码都正确但点击登陆就清空密码的问题

    作者:荒原之梦 问题产生的环境与问题描述: 今天我在浏览器的书签里将我保存的用于登陆WordPress的书签名字改了一下,之后再登陆WordPress就出现提示说Cookies被阻止,要启用Cooki ...

  7. JavaWeb(四)Servlet-1

    1.Servlet 简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet ...

  8. sql语句的一些案列!

    http://www.cnblogs.com/skynet/archive/2010/07/25/1784892.html

  9. Zepto源码(2016)——Zepto模块(核心模块)

    // Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  10. 超实用的JavaScript代码段 Item3 --图片轮播效果

    图片轮播效果 图片尺寸 统一设置成:490*170px; 一.页面加载.获取整个容器.所有放数字索引的li及放图片列表的ul.定义放定时器的变量.存放当前索引的变量index 二.添加定时器,每隔2秒 ...