赞
踩
OpenCv是一个开源的基于BSD许可的库,拥有数百种计算机视觉算法。OpenCv具有模块化的结构,这意味着开发包由多个模块组成,具体如下:
核心功能:定义了基本的数据结构和基本功能,便于其他模块调用。
图像处理:包含了很多对图像进行操作的算法,例如:几何变换,直方图统计,颜色空间转换等。
影像处理:一个对视频分析的模块,可实现动作判定,背景弱化,目标追踪算法等。
3D校准:基于多视图的几何算法,屏幕和立体摄像机校准,立体匹配算法,3D元素重建。
平面特征:对图像中特征的提取。
对象侦查:用于识别对象的算法,例如:脸、眼睛、杯子、人等。
。。。。。
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库的二进制文件,提供数据的贡献,对所支持的平台都会有硬件优化,减少内存使用参考.
引入完成后,后台会报一个错误,点击该错误,在打开的文件中,注释掉相应代码即可。
最后,修改OpenCV模块的版本与app版本一致。
修改成如下:
重新编译。
进入官网下载的android-opencv的文件夹,复制对应位置的文件
这些文件夹都是一件编译好的二进制so文件,分别对应文件夹名称的安卓架构,若手机架构为x86的,那么我们只需要引入x86的文件夹到工程中的libs文件夹中。
然后,在app对应的build.gradle中,添加如下的模块。
最后,在主Activity中,初始化OpenCV。
编译时,后台输出onCreate: Success,那么就表示引用成功。
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中
2)为button绑定一个点击事件
3)凸包提取操作(读取待处理图片、图像预处理、形态学变化、轮廓发现与凸包提取、结果展示)、具体请看代码
4)结果展示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。