Android-OpenCV 基础讲解

一、初识Android-OpenCv

1,Opencv

OpenCv是一个开源的基于BSD许可的库,拥有数百种计算机视觉算法。OpenCv具有模块化的结构,这意味着开发包由多个模块组成,具体如下:
核心功能:定义了基本的数据结构和基本功能,便于其他模块调用。
图像处理:包含了很多对图像进行操作的算法,例如:几何变换,直方图统计,颜色空间转换等。
影像处理:一个对视频分析的模块,可实现动作判定,背景弱化,目标追踪算法等。
3D校准:基于多视图的几何算法,屏幕和立体摄像机校准,立体匹配算法,3D元素重建。
平面特征:对图像中特征的提取。
对象侦查:用于识别对象的算法,例如:脸、眼睛、杯子、人等。
。。。。。

2,Android-OpenCv 参考.

Android是一个基于Linux内核的开源操作系统,主要使用的是Java语言。Android-OpenCV就是使用Java语言实现的OpenCV。在Android平台中开发OpenCV程序,必须安装以下软件:
1,Java jdk; 2,Android SDK;3,Android SDK components;4,Android studio 编译器;5,OpenCV Manager;
备注:1)在安装Android Studio时,需要预留10G以上的存储空间。
2)Android平台也可以使用C++进行开发(本章不做过多讲解)。
3)OpenCV Manager时一款Android服务,用来在用户设备撒花姑娘管理OpenCv库的二进制文件,提供数据的贡献,对所支持的平台都会有硬件优化,减少内存使用参考.

二、引入Android-OpenCV

1、OpenCv官网下载Android版本的OpenCv到本地

Android-OpenCV 基础讲解_第1张图片

2、创建工程(略)
3、以第三方模块的方式,引入Opencv

Android-OpenCV 基础讲解_第2张图片Android-OpenCV 基础讲解_第3张图片Android-OpenCV 基础讲解_第4张图片

4,把新引入的opencv模块和工程进行链接

Android-OpenCV 基础讲解_第5张图片Android-OpenCV 基础讲解_第6张图片引入完成后,后台会报一个错误,点击该错误,在打开的文件中,注释掉相应代码即可。
在这里插入图片描述Android-OpenCV 基础讲解_第7张图片最后,修改OpenCV模块的版本与app版本一致。
Android-OpenCV 基础讲解_第8张图片修改成如下:
Android-OpenCV 基础讲解_第9张图片重新编译。

5,项目中接入OpenCV模块

进入官网下载的android-opencv的文件夹,复制对应位置的文件
Android-OpenCV 基础讲解_第10张图片这些文件夹都是一件编译好的二进制so文件,分别对应文件夹名称的安卓架构,若手机架构为x86的,那么我们只需要引入x86的文件夹到工程中的libs文件夹中。
Android-OpenCV 基础讲解_第11张图片然后,在app对应的build.gradle中,添加如下的模块。
Android-OpenCV 基础讲解_第12张图片最后,在主Activity中,初始化OpenCV。
Android-OpenCV 基础讲解_第13张图片

6,验证OpenCV是否引用成功

编译时,后台输出onCreate: Success,那么就表示引用成功。

三、一些常用的OpenCV图像处理方法

1)颜色转换
例如:灰度转换
Imgproc.cvtVolor(src, des, Imgproc.COLOR_BGR2GRAY)
2)滤波操作
例如:均值滤波
Imgproc.blur(src, des, new Size(15,15),new Point(-1,-1), Core.BORDER_DEFAULT);
中值滤波
Imgproc.medianBlur(src, des, 15)
自定义边缘锐化滤波
Mat k = new Mat(3,3,CvType,CV_32FC1);
float[] data = new float[]{0,-1,0,-1,5,-1,0,-1,0};
k.put(0,0,data);
Imgproc.filter2D(src, dex, -1, k);
3)形态学变化
例如:闭运算
Mat kernel = Imgporc.getStructuringElement(Imgproc.MORPH_ELLIPSE, new Size(25, 25), new Point(-1,-1));// 返回一个指定尺寸和结构的元素 第一个参数规定Mat的形状(正方形,椭圆,交叉形)
Imgproc.morphologyEx( src, des, Imgproc.MORPH_CLOSE, kernel);
二值化
Imgproc.threshold(src, des, 100, 255, Imgproc.THRESH_BINARY);
。。。。。。

四、凸包检测

1)把需要进行凸包检测的图片放到res下面的drawable中
Android-OpenCV 基础讲解_第14张图片2)为button绑定一个点击事件
Android-OpenCV 基础讲解_第15张图片3)凸包提取操作(读取待处理图片、图像预处理、形态学变化、轮廓发现与凸包提取、结果展示)、具体请看代码
4)结果展示
Android-OpenCV 基础讲解_第16张图片

你可能感兴趣的:(学习心得,android,opencv)