转载请说明出处!
作者:kqw攻城狮
出处:个人站 | CSDN
官网
之前时间比较紧张,在网上找了很多文章,写了一个人脸识别的程序,也是模棱两可,今天开始抽时间系统学习一下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,如果诶呦安装会有提示
|
|
到此,准备工作做完,就可以在此工程上学习OpenCV了。
如果你在运行的过程中,遇到这样的问题
这是SDK版本的问题,将targetSdkVersion
改为19即可。
运行结果