OpenCV: Open Source Computer Vision Library
OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法
OpenCV官网:http://www.opencv.org.cn/
OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。
OpenCV 是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。
OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。
OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。
Opencv 安装
1. 安装Python3,并配置环境变量
2. pip install opencv-python
3. pip install opencv-contrib-python
OpenCV实现UI自动化
在做UI自动化的过程中,会发现很多控件的元素是一样的或者是找不到的
如何解决痛点:通过图片灰度处理返回坐标x,y找到控件的位置
需要使用两个图:
1.整个页面截图
2.控件的图
OpenCV中使用matchTemplate函数来实现模板匹配
cv2.matchTemplate(image, templ, method, result=None, mask=None)
image:待搜索图像
templ:背景图像
result:匹配结果
method:计算匹配程度的方法
OpenCV图像匹配方法
关于匹配方法,使用不同的方法产生的结果的意义可能不太一样,有些返回的值越大表示匹配程度越好,而有些方法返回的值越小表示匹配程度越好。
关于参数 method:
CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。
CV_TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。
CV_TM_CCOEFF 相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。
CV_TM_SQDIFF_NORMED 归一化平方差匹配法
CV_TM_CCORR_NORMED 归一化相关匹配法
CV_TM_CCOEFF_NORMED 归一化相关系数匹配法
通过MinMaxLoc获取最后的最佳匹配结果
利用OpenCV minMaxLoc 传入的参数就是matchTemplate的返回值,minMaxLoc自己的返回值是一个元素,分别为(最小值,最大值,最小值所在点坐标,最大值所在点坐标)
res = cv2.matchTemplate(_tran_canny(image), _tran_canny(template), cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
人脸识别主流程
函数训练
Opencv有很多的检测器,可以打开opencv的安装路径D:\Program Files\python\Lib\site-packages\cv2\data,可以看见以下文件
Opencv自带的检测模型
Opencv自带训练好的人脸检测模型。其中几个.xml文件如下:
人脸检测器(默认):haarcascade_frontalface_default.xml
人脸检测器(快速Harr):haarcascade_frontalface_alt2.xml
人脸检测器(侧视):haarcascade_profileface.xml
眼部检测器(左眼):haarcascade_lefteye_2splits.xml
眼部检测器(右眼):haarcascade_righteye_2splits.xml
嘴部检测器:haarcascade_mcs_mouth.xml
鼻子检测器:haarcascade_mcs_nose.xml
身体检测器:haarcascade_fullbody.xml
人脸检测器(快速LBP):lbpcascade_frontalface.xml
函数训练主要步骤
1.调用人脸分类器
2.用灰度的方式打开照片,防止采光等问题的影响,同时减少颜色因素导致的计算
3.将照片转换为技术能识别的数组
4.提取图像中人脸的识别特征
5.收集人脸信息
6.调用LBPH算法对人脸数据进行处理
7.训练数据并保存到文件中
人脸识别测试流程
1.打开摄像头
2.获取当前摄像头中的头像
3.读取训练函数的数据
4.当前头像与数据对比