当前位置: 首页 > article >正文

Opencv UI自动化应用人脸识别

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.当前头像与数据对比
 


http://www.kler.cn/news/163405.html

相关文章:

  • 设计模式--建造者模式
  • Matplotlib中的titles(标题)、labels(标签)和legends(图例)
  • Android studio生成二维码
  • 浅谈前端代码里的命名规范与注释
  • 大一C语言作业 12.8
  • 图片处理OpenCV IMDecode模式说明【生产问题处理】
  • Qt工程文件分离、Qtimer定时器、Qt Creator 常用快捷键
  • jsp 个人网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • Hazel引擎学习(十二)
  • C++初阶-string类的模拟实现
  • Linux中的文件系统
  • 26、pytest使用allure解读
  • 12.8 作业
  • 基于ssm志愿者招募网站源码和论文
  • JS中call()、apply()、bind()改变this指向的原理
  • Ultimate VFX
  • css中2D和3D的区别
  • ELK(五)—集群搭建
  • Linux--学习记录(2)
  • Web学习路线
  • 【ET8】0.ET8入门-ET框架介绍
  • 交付《啤酒游戏经营决策沙盘》的项目
  • vue2 el-input里实现打字机 效果
  • 深入理解 Promise:前端异步编程的核心概念
  • 29 水仙花数
  • 【后端学前端学习记录】学习计划
  • 【Azure 架构师学习笔记】- Azure Databricks (2) -集群
  • 低多边形3D建模动画风格纹理贴图
  • 《每天一个Linux命令》 -- (6) stat命令
  • 设计模式——单例模式(Singleton Pattern)