Opencv UI自动化应用人脸识别

news2024/11/24 0:10:47

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.coloradmin.cn/o/1297375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】——函数递归,用递归简化并实现复杂问题

文章目录 前言一、什么是递归二、递归的限制条件三、递归举例1.求n的阶乘2. 举例2:顺序打印一个整数的每一位 四、递归的优劣总结 前言 不多废话了,直接开始。 一、什么是递归 递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢&#xf…

科学指南针助力江西高校开展《透射电子显微镜简介及案例分析课程》讲座

2023年11月,科学指南针与江西各大高校合作,共同开展了一场关于《透射电子显微镜的简介及案例分析课程》讲座。该讲座旨在加强学生对于透射电子显微镜的了解,提高他们在科学研究中的实践能力。 透射电子显微镜(简称TEM&#xff09…

《师兄啊师兄》第二季确认定档!海神扬名,稳健回归!

近日,《师兄啊师兄》第二季的定档海报和PV终于发布,确认将于12月14日上午10点强势回归!这部备受瞩目的国漫作品自第一季播出以来,便以其独特的剧情设定和唯美的画风,赢得了广大观众的喜爱。如今,动画第二季…

“轻松管理文件,一键导出表格,让您的归档工作井井有条“

在忙碌的工作中,我们经常会被大量的文件和数据所困扰。如何有效地管理和整理这些资料,成为了一个让人头疼的问题。今天,我们向您介绍一款强大的文件管理工具——一键导出表格,帮助您轻松解决这个问题。 第一步,首先我们…

【uC/OS-II】

uC/OS-II 1. uC/OS-II1.1 代码组成1.2 任务基本概念1.3 任务控制块![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/23fe7cd390b94b7eb06a110b10165d22.png)1.4 任务的状态与切换1.5 任务创建的代码 2 任务2.1 系统任务2.2 任务管理相关函数2.3 任务基本属性2.4 uC/…

Java当中常用的算法

文章目录 算法二叉树左右变换数据二分法实现 冒泡排序算法插入排序算法快速排序算法希尔排序算法归并排序算法桶排序算法基数排序算法分治算法汉诺塔问题动态规划算法引子代码实现背包问题 KMP算法什么是KMP算法暴力匹配KMP算法实现 今天我们来看看常用的算法,开干。…

SVN版本回退

文章目录 SVN版本回退 SVN版本回退 一、revert to this version和revert to this version的区别: 基于4674版本执行"revert to this version"操作效果: 基于4674版本执行"revert changes from this version"操作效果&#xff1…

探索 SNMPv3 魔法:armbian系统安装snmp服务并通过SNMPV3进行连接控制

文章目录 说明SNMP服务的安装本机连接SNMPV3操作MIB Browser连接SNMPV3问题总结密码过短权限配置错误,导致OID不存在 说明 工具 建议尝试专业版ireasoning MIB brower,因为只有专业版支持SNMP v3的连接。当然,也可以尝试其他SNMP客户端工具 …

Java中的异常:理解与处理编程中的“预期之外”

文章目录 什么是Java 异常?Java中异常有哪些类型?怎么处理编译时异常?总结 今天咱们聊聊Java世界里不可或缺的一部分——异常(Exception)。就像人生中的起起落落,编程世界也充满了不可预知的风险和状况,这就是我们今天…

微信小程序适配方案:rpx(responsive pixel响应式像素单位)

小程序适配单位:rpx 规定任何屏幕下宽度为750rpx 小程序会根据屏幕的宽度自动计算rpx值的大小 Iphone6下:1rpx 1物理像素 0.5css 小程序编译后,rpx会做一次px换算,换算是以375个物理像素为基准,也就是在一个宽度…

算法备胎hash和队列的特征——第五关青铜挑战

内容1.Hash存储方式2.Hash处理冲突的方式3.队列存储的基本特征4.如何使用链表来实现栈 1.Hash 基础 1.1Hash的概念和基本特征 哈希(Hash)也称为散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出&#…

每日一题 2048. 下一个更大的数值平衡数(枚举)

乍一看没什么想法,但它的 x 是有限的,而题目规定的数值平衡数的要求很严格,相对来说只有少部分数满足要求,所以想到了枚举的方法通过寻找所有在范围内的全排列中满足数值平衡数的要求的数,找到最接近 n 的一个官方给出…

uniapp实战 —— 竖排多级分类展示

效果预览 完整范例代码 页面 src\pages\category\category.vue <script setup lang"ts"> import { getCategoryTopAPI } from /apis/category import type { CategoryTopItem } from /types/category import { onLoad } from dcloudio/uni-app import { compu…

RabbitMQ使用指南

介绍主要特点常用插件使用RabbitMQ的插件常用插件列表 应用场景Kafka与RabbitMq的区别主要优缺点安装步骤插件安装步骤 使用RabbitMqJava代码示例拓展 介绍 RabbitMQ是由Erlang语言开发的&#xff0c;基于AMQP&#xff08;高级消息队列协议&#xff09;协议实现的开源消息代理…

皮卡丘软件的使用教程,python皮卡丘编程代码

本篇文章给大家谈谈皮卡丘软件的使用教程&#xff0c;以及python皮卡丘编程代码&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 嗨害大家好鸭&#xff01;我是小熊猫❤ 昨天企鹅裙里有小伙伴说想让我用Python整个桌面小挂件~ 做个日历什么的感觉不够好玩~ 今…

智能统计账户支出,掌控财务状况,轻松修改明细。

在这个快节奏的时代&#xff0c;我们的生活每天都在发生着变化。无论是工资收入、购物消费&#xff0c;还是房租支出、投资理财&#xff0c;我们的财务状况也因此变得日益复杂。那么&#xff0c;有没有一种方法可以让我们轻松掌握自己的财务状况&#xff0c;实现智慧理财呢&…

springboot助农管理系统

springboot助农管理系统 源码获取&#xff1a; https://docs.qq.com/doc/DUXdsVlhIdVlsemdX

小科普:什么是 API(应用程序编程接口)

API 是一种为客户提供服务的方式。 编者按&#xff1a;何为API&#xff1f;如果你在百度百科上搜索&#xff0c;你会得到如下结果&#xff1a;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的…

JWT介绍及演示

JWT 介绍 cookie(放在浏览器) cookie 是一个非常具体的东西&#xff0c;指的就是浏览器里面能永久存储的一种数据&#xff0c;仅仅是浏览器实现的一种数据存储功能。 cookie由服务器生成&#xff0c;发送给浏览器&#xff0c;浏览器把cookie以kv形式保存到某个目录下的文本…

Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置

一、依赖安装 sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk pip2 install pandas jinja2 pyserial cerberus pyulog0.7.0 n…