OpenCV的部署
来源:互联网 发布:电脑高清录屏软件 编辑:程序博客网 时间:2024/05/18 07:22
存粹阅读,请访问OpenCV的部署
官网
官网
之前时间比较紧张,在网上找了很多文章,写了一个人脸识别的程序,也是模棱两可,今天开始抽时间系统学习一下OpenCV在Android上的使用。
OpenCV版本
后面用到的是OpenCV的2.4.11版本,据说新的3.x的版本和2.x的版本改动较大,2.x的版本学习完可以再看看与3.x版本的区别。毕竟老版本的学习资源更多一些。
SDK
我们下载完SDK以后,里面会有一个Library的库供我们使用,但是核心的功能不在这里面,它只是一个调用的工具,我们还需要安装OpenCV Manager,在下载的SDK里有一个apk
的文件夹,里面是对应各个cup架构的Manager,选择对应的Manager安装就可以了。
除了安装OpenCV Manager,也可以直接在工程里添加so,但是这会使我们的APK体积大大增加,不过这不是我们要关心的,我们主要学习怎么使用OpenCV。
OpenCV的图像存储
OpenCV使用Mat
对象存储图像,该对象保存了图像的行数、列数、数据等能唯一标识该图像的信息,并且可以利用该数据还原图像,不同的图像所包含的信息量也不同,例如彩色图像所包含的信息量就要比灰色图像多得多。因为灰色图是单通道的,彩色图是三通道的。
灰色图
数字代表指定颜色的亮度
以整数表示时,取值范围是0~255,0表示纯黑色,255表示纯白色。
以浮点数表示时,取值范围是0~1,0表示纯黑色,1表示纯白色。
彩色图
第一通道表示蓝色,第二通道表示绿色,第三通道表示红色。
OpenCV的线性滤波器
有的时候,图像信息量太大,处理的时间就会比较长(有的时候可能不需要这么信息就可以解析出来我们想要的结果了),为了解决这个问题,OpenCV提供了一个线性滤波器,可以对图片进行模糊处理。
很多线性滤波器都利用了称为核的数字向量,核可以看作是沿着像素滑动的窗口,并把计算结果输出给核像素。
下面的图中,是一个3 * 3
的核作用在了一副10 * 10
的图像上。
创建OpenCV工程
Android Studio版本:2.1
- 创建Android Studio工程,命名为FirstOpenCVDemo
导入OpenCV Library
File -> New -> Import Module
引用OpenCV Library
安装OpenCV Manager
加载OpenCV Manager,如果诶呦安装会有提示
private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: Log.i(TAG, "OpenCV Manager已安装,可以学习OpenCV啦。"); break; default: super.onManagerConnected(status); break; } }};@Overrideprotected void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_11, this, mOpenCVCallBack);}
到此,准备工作做完,就可以在此工程上学习OpenCV了。
如果你在运行的过程中,遇到这样的问题
这是SDK版本的问题,将targetSdkVersion
改为19即可。
运行结果
源码
FirstOpenCVDemo
- OpenCV的部署
- OpenCV 3.0 安装与VS2012的部署
- 部署基于OpenCV的程序需要的运行时文件
- RedHat6.5上Opencv的编译和部署
- 测试opencv是否部署成功
- 在Android平台部署Opencv
- 【OpenCV】OpenCV的基础知识
- VS2010+OpenCV 2.4.9环境部署
- Ubuntu下快速部署opencv环境
- 遇到Android Studio 上部署Opencv 问题
- 【opencv】OpenCv的基本数据类型
- 【OpenCV】OpenCV的fillPoly函数
- 【OpenCV】OpenCV的样本训练
- 在Eclipse下怎么部署环境来使用OpenCV Java
- 【OpenCV】在没有安装OpenCV的电脑运行OpenCV程序
- 【OpenCV】在没有安装OpenCV的电脑运行OpenCV程序
- tomcat的静态部署和动态部署
- tomcat的静态部署和动态部署
- C# LAMDA表达式
- LeetCode: Ransom Note
- String类型变量转成InputStream或者Reader流类型,用于sax解析的输入,转成InputStream时中文乱码,转成Reader流就好了
- 数据处理中Java与scala实现二次排序
- CentOS 7 下 ifconfig command not found 解决办法
- OpenCV的部署
- 前端入门-富文本编辑器(二)
- android 倒计时 发送激活码
- insert用select插入例子
- c# 跨域接口
- linux下安装Apache
- Java 单例 (Singleton)设计模式
- JSTL 核心标签库 使用
- 华为上机题汇总(十八)