Python(PySimpleGUI 库)

PySimpleGUI 是一个用于简化 GUI 编程的 Python 包,它封装了多种底层 GUI 框架(如 tkinter、Qt、WxPython 等),提供了简单易用的 API。PySimpleGUI 包含了大量的控件(也称为小部件或组件),这些控件可以帮助你快速构建用户界面

安装:pip install PySimpleGUI==4.60.5

该库5.0版本后收费,故安装4.6版本

布局和窗口

文本输入输出案例

视频处理

图片上传

pymsql 库

PyMySQL 是一个用于连接 MySQL 数据库的纯 Python 实现。它允许 Python 程序与 MySQL 数据库进行交互,执行 SQL 查询,并处理结果集

安装:pip install pymysql

数据库操作

在navicat中创建该表

表名及数据库名自定

导入包

增加数据

调用:

打印:

返回navicat刷新可见:

再添加一些数据。

删除数据

如图可按id删除数据

调用:

修改数据

如图,可根据id来修改对应user的名字

调用

查找

如图:通过user的num来查找user的信息

调用:

人脸采集

1 准备工作:创建人脸表

继续用上表

首先导入需要的包

定义一个连接数据库,然后添加人脸信息的函数。

再定义一个函数,用于开启摄像头,然后创建窗口“人脸信息采集”,创建文本信息和命令按键

创建好窗口后开始循环,(timeout=10)中,10为摄像头刷新间隔,读取视频帧,当点击关闭和窗口叉键时,会直接关闭窗口,结束程序

当视频帧存在时,将数据帧画面更新为bytes类型,后将视频帧更新到窗口,当点击采集时,输入编号和姓名,同时将视频帧上的人脸图片保存至一个文件夹(自己指定),再用if语句检测是否有录入信息,如果有,就调用之前创建的函数将采集时输入的编号和名字存入navicat数据库内。

释放资源

调用采集函数。完成采集。

窗口输入信息

点击采集

采集成功

navicat信息也录入成功。

人脸识别

导入需要的库

定义一个查找信息的函数:

通过user的num来进行查找,如果num在数据库中,则会打印该user全部信息,返回user的名字。

def dataGet():#开启摄像头像cap = cv2.VideoCapture(0)if cap.isOpened()==False:print("摄像头没有开启")return#创建布局layout =[[sg.Image(key="video")],[sg.Button("关闭"),sg.Button("人脸识别")]]#创建窗口window = sg.Window("人脸识别",layout)#循环while True:event,value = window.read(timeout=10)#读取视频ret ,frame = cap.read()if event in (None,"关闭"):#终止循环breakif ret:imtType = cv2.imencode(".png",frame)[1].tobytes()window["video"].update(imtType)if event =="人脸识别":#查找人脸库list_dir = os.listdir("..\save_image")if len(list_dir)>0:for i in list_dir:print(i)#读取一个图片对象img = cv2.imread(f"..\save_image\{i}")if img is None:print("没有读取图片")breakelse:#获取已知图片的特征变量en1 = face_recognition.face_encodings(img)[0]#获取需要检测图片的特征变量en2 = face_recognition.face_encodings(frame)if len(en2) == 0:sg.popup('未检测出人脸')else:#计算欧几里得距离rs = np.linalg.norm(en1-en2[0])print(rs)if rs < 0.5:b = i.split(".")[0]a = query(b)sg.popup(f"用户{a}打卡成功")#查到此人,终止循环breakelse:continue

定义一个人像识别函数:

1.开启摄像头,创建一个能显示图片,有“关闭”和“人脸识别”两个选项的窗口

2.创建死循环:读取窗口信息和读取摄像头画面信息,和采集函数一样,先判断用户的操作,如果用户点击“关闭”和关闭窗口,就结束程序,接着判断摄像头是否读取到信息,读取到之后将信息转换成bytes类型(防止窗口显示不了画面),将读取到的画面显示在窗口上。

3.接着定义用户点击“人脸识别”后,首先通过os.listdir()函数,遍历指定保存人脸信息文件夹的图片,并返回以所有图片名作为字符串的列表,如果返回的列表不为空(有图片文件),则创建循环来依次读取图片信息。

4.读取到图片信息后,便通过face_recognition.face_encodings()函数来获取该图片的特征变量及视频帧中画面的特征变量,因为时人脸测,所以先判断视频帧特征变量函数的返回值是否为空,为空,则提示没检测到人脸,不为空则与遍历图片计算欧几里得距离。

5.自己设定一个阈值(re),图中设置为0.5,如果re值小于设定的阈值,则将遍历图片的名字以“.”分割(如图片名为11.png,就将其分为“11”和“png”两部分)取前面的数值,将这个值作为num传入查找函数,调用查找函数。数据库中有该信息,则会打印该user信息并返回它的名字,提示"用户{a}打卡成功",若没找到,则继续遍历;遍历结束还没找到,则弹出“查无此人”的信息。

最后释放资源,调用函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/10633.html

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

相关文章

LangChain学习心得总结

大模型开发遇到的问题及langchain框架学习 背景&#xff1a; 1、微场景间跳转问题&#xff0c;无法实现微场景随意穿插 2、大模型幻读&#xff08;推荐不存在的产品、自己发挥&#xff09; 3、知识库检索&#xff0c;语义匹配效果较差&#xff0c;匹配出的结果和客户表述的…

Linux基础(十二)——文件与文件系统的压缩、打包和备份

文件与文件系统的压缩、打包和备份 1.压缩1.1 压缩方法及其后缀1.2 gzip1.3 bzip21.4 xz 2.打包3.XFS文件系统备份与还原4.镜像文件创建&#xff08;mkisofs&#xff09; 1.压缩 1.1 压缩方法及其后缀 我们知道在 Linux 下面的扩展名是没有什么很特殊的意义的&#xff0c; 不…

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…

MLMs之OmniGen:OmniGen(统一图像生成模型)的简介、安装和使用方法、案例应用之详细攻略

MLMs之OmniGen&#xff1a;OmniGen(统一图像生成模型)的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇论文介绍了OmniGen&#xff0c;一个用于统一图像生成的扩散模型。论文的核心要点可以总结如下&#xff1a; >> 背景痛点&#xff1a; ● 图像生成领…

LeetCode 143.重排链表

题目&#xff1a; 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0c;而是需要实际…

Linux进程信号(信号的产生)

目录 什么是信号&#xff1f; 信号的产生 信号产生方式1&#xff1a;键盘 前台进程 后台进程 查看信号 signal系统调用 案例 理解进程记录信号 软件层面 硬件层面 信号产生方式2:指令 信号产生方式3:系统调用 kill系统调用 案例 其他产生信号的函数调用 1.rais…

【C++】STL— stack的常见用法和模拟实现

目录 1、stack的介绍 2、stack的使用 构造一个空栈 stack的简单接口应用 3、stack的模拟实现 4、栈的相关题目 4.1 最小栈 4.1.2思路 4.1.3 实现代码 4.2 栈的压入、弹出序列 4.2.2 思路 4.2.3程序实现 1、stack的介绍 在C中&#xff0c;stack是一种标准模板库&am…

神书《从零构建大模型》分享,尚未发布,GitHub标星22k!!

《从零构建大模型》是一本即将于今年10月底发布的书籍&#xff0c;github已经吸引了惊人的21.7k标星&#xff01;作者是威斯康星大学麦迪逊分校的终身教授&#xff0c;在GitHub、油管、X上拥有大量粉丝&#xff0c;是一位真正的大佬。 本书免费获取地址 在本书中&#xff0…

【深度学习目标检测|YOLO算法2】YOLO家族进化史:从YOLOv1到YOLOv11的架构创新、性能优化与行业应用全解析...

【深度学习目标检测|YOLO算法2】YOLO家族进化史&#xff1a;从YOLOv1到YOLOv11的架构创新、性能优化与行业应用全解析… 【深度学习目标检测|YOLO算法2】YOLO家族进化史&#xff1a;从YOLOv1到YOLOv11的架构创新、性能优化与行业应用全解析… 文章目录 【深度学习目标检测|YOL…

动态避障-图扑自动寻路 3D 可视化

自动寻路是机器人导航的核心技术&#xff0c;其原理主要涉及机器人与环境之间的复杂信息交互与处理。在自动寻路过程中&#xff0c;机器人依靠先进的传感器系统&#xff0c;如高清摄像头、精密激光雷达和灵敏超声波装置&#xff0c;全方位感知周围环境。这些传感器能够实时捕捉…

Docker 镜像拉不动?自建 Docker Hub 加速站 解决镜像拉取失败

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 众所周知&#xff0c;6 月份的时候&#xff0c;Docker Hub 的镜像就已经无法正常拉取&#xff0c;那会随手用 Nginx 反代了一下 Docker Hub&#xff0c;建了个自用的镜像站&#xff0c;一直用到了 9 月份&…

RabbitMQ集群搭建

RabbitMQ集群搭建 1、RabbitMQ集群1.1、默认集群模式1.1.1、为什么集群不复制队列内容和状态到所有节点? 1.2、镜像集群模式 2、默认集群模式安装前准备2.1、准备3台机器2.2、启动三台机器2.3、使用xshell 连接三台机器2.4、服务器安装erlang和RabbitMQ2.5、修改三台机器的/et…

mysql-springboot netty-flink-kafka-spark(paimon)-minio

1、下载spark源码并编译 mkdir -p /home/bigdata && cd /home/bigdata wget https://archive.apache.org/dist/spark/spark-3.4.3/spark-3.4.3.tgz 解压文件 tar -zxf spark-3.4.3.tgz cd spark-3.4.3 wget https://raw.githubusercontent.com/apache/incubator-celeb…

系统安全第七次作业题目及答案

一、 1.RBAC0 RBAC1 RBAC2 RBAC3 2.属性 身份标识 3.接入访问控制 资源访问控制 网络端口和节点的访问控制 二、 1.B 2.A 3.ABE 4.BCD 5.ABC 三、 1. 答&#xff1a;基于属性的访问控制&#xff08;ABAC&#xff09;是通过对实体属性添加约束策略的方式实现主、客体之…

【GESP】C++一级真题练习(202312)luogu-B3922,小杨报数

GESP一级真题练习。为2023年12月一级认证真题。for循环和取余计算应用。 题目题解详见&#xff1a;https://www.coderli.com/gesp-1-luogu-b3922/ 【GESP】C一级真题练习(202312)luogu-B3922&#xff0c;小杨报数 | OneCoderGESP一级真题练习。为2023年12月一级认证真题。for…

国科大现代信息检索技术第一次作业

第一次作业 题目1&#xff1a;考虑以下文档 文档名内容文档1new home sales top forecasts文档2home prices rise in june文档3increase in home sales in june文档4july new home sales rise 1、画出文档集对应的词项-文档矩阵 文档1文档2文档3文档4forecasts1000home1111…

计算机视觉实验四:特征检测与匹配

特征检测与匹配 1 角点检测算法实验 1.1 实验目的与要求 &#xff08;1&#xff09;了解及掌握角点检测算法原理。 &#xff08;2&#xff09;掌握在MATLAB中角点算法的编程。 &#xff08;3&#xff09;掌握Moravec&#xff0c;Harris与SUSAN算法的差异。 1.2 实验原理及…

十八:Spring Boot 依赖(3)-- spring-boot-starter-data-jpa 依赖详解

目录 1. 理解 JPA&#xff08;Java Persistence API&#xff09; 1.1 什么是 JPA&#xff1f; 1.2 JPA 与 Hibernate 的关系 1.3 JPA 的基本注解&#xff1a;Entity, Table, Id, GeneratedValue 1.4 JPA 与数据库表的映射 2. Spring Data JPA 概述 2.1 什么是 Spring Dat…

如何用C++代码实现一颗闪烁的爱心?

要用 C 实现爱心闪烁效果&#xff0c;我们可以使用控制台输出文本&#xff0c;并通过在控制台中刷新屏幕来模拟闪烁的效果。由于 C 本身没有类似 turtle 这样的图形库&#xff0c;操作控制台输出的方式比较简单&#xff0c;主要通过字符绘制和时间延迟来实现。 这里给出一个基…

基于美颜SDK的实时视频美颜平台开发:技术难点与解决方案

美颜SDK作为视频美颜平台的核心&#xff0c;提供了多种美颜功能。这些功能通过调整参数实现对人脸特征的优化。在架构设计上&#xff0c;美颜SDK主要包括以下几部分&#xff1a; 1.人脸检测与特征点识别&#xff1a;通过深度学习模型&#xff0c;识别人脸并标记出关键特征点&a…