pyqt的人脸识别 基于face_recognition库

参考文献:

1、python face_recognition实现人脸识别系统_python facerecognition检测人脸-CSDN博客

2、cv2.VideoCapture()_cv2.videocapture(0)-CSDN博客

1、camera.py文件代码如下;目录如下

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtCore import QTimer
import cv2
import face_recognition
import osclass VideoPlayer(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("Video Player")self.setGeometry(100, 100, 800, 600)# 创建显示视频的标签self.label = QLabel(self)self.label.resize(640, 480)self.label.move(80, 40)# 创建按钮self.button = QPushButton('Play/Stop', self)self.button.move(350, 550)self.button.clicked.connect(self.toggle_video)# 加载已知人脸数据self.known_faces = {}for person_name in os.listdir("known_faces"):person_dir = os.path.join("known_faces", person_name)if os.path.isdir(person_dir):person_faces = []for filename in os.listdir(person_dir):image_path = os.path.join(person_dir, filename)image = face_recognition.load_image_file(image_path)encoding = face_recognition.face_encodings(image)[0]person_faces.append(encoding)self.known_faces[person_name] = person_faces# 初始化摄像头self.video_capture = cv2.VideoCapture(0)# 设置定时器,每隔33毫秒刷新一次self.timer = QTimer(self)self.timer.timeout.connect(self.next_frame)self.timer.start(33)def next_frame(self):# 读取视频流ret, frame = self.video_capture.read()# 转换为RGB格式rgb_frame = frame[:, :, ::-1]# 检测人脸face_locations = face_recognition.face_locations(rgb_frame)face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)# 对比已知人脸for face_encoding in face_encodings:found = Falsefor person_name, known_face_encodings in self.known_faces.items():matches = face_recognition.compare_faces(known_face_encodings, face_encoding, tolerance=0.4)if True in matches:cv2.putText(frame, f" {person_name}!", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)found = Truebreakif found:break# 将视频帧显示在标签中height, width, channel = frame.shapebytesPerLine = 3 * widthqImg = QImage(frame.data, width, height, bytesPerLine, QImage.Format_RGB888)pixmap = QPixmap.fromImage(qImg)self.label.setPixmap(pixmap)def toggle_video(self):if self.timer.isActive():self.timer.stop()else:self.timer.start(33)if __name__ == '__main__':app = QApplication(sys.argv)player = VideoPlayer()player.show()sys.exit(app.exec_())

2、运行效果图

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

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

相关文章

NineData正式将SQL开发正式升级为数据库DevOps

NineData SQL 开发早期主要提供 SQL 窗口(IDE)功能,产品经过将近两年时间的打磨,新增了大量的企业级功能,时至今日已经服务了上万开发者,覆盖了数据库设计、开发、测试、变更等生命周期的功能。 为了让企业…

深入理解数据结构第五弹——排序(2)——快速排序

排序(1):深入了解数据结构第四弹——排序(1)——插入排序和希尔排序-CSDN博客 前言: 在前面我们已经讲过了几种排序方式,他们的效率有快有慢,今天我们来学习一种非常高效的排序方式…

笔记本电脑上的聊天机器人: 在英特尔 Meteor Lake 上运行 Phi-2

对应于其强大的能力,大语言模型 (LLM) 需要强大的算力支撑,而个人计算机上很难满足这一需求。因此,我们别无选择,只能将它们部署至由本地或云端托管的性能强大的定制 AI 服务器上。 为何需要将 LLM 推理本地化 如果我们可以在典配…

windows下使用nginx设置静态资源路由

1、下载nginx http://nginx.org/en/download.html 下载稳定版本,以nginx/Windows-1.24.0为例,下载后解压,解压后如下: 2、启动nginx 打开cmd命令窗口,切换到nginx解压目录下: start nginx # 启动nginx服务…

OpenWrt 多拨负载均衡不起作用

检查 负载均衡->规则->Https->粘滞模式 是否启动,设置为 否 如果设置为是,那么根据官方描述: 来自相同源 IP 的流量,如果已经匹配过此规则并且在粘滞超时时间内,将会使用相同的 WAN 接口 意思就是如果你同一个…

实验六 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 请完成创建图片库应用&#xff0c;显示一系列预设的图片。 提供按钮来切换显示不同类别的图片。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; 1.WXML <view> <button bindtap"showAll">所有图片</but…

小程序视频怎么保存到mp4

小程序上的视频如何下载成mp4&#xff0c;本文就将教大家如何将小程序视频保存到mp4&#xff0c;这里要用到一个工具:下载高手 下载高手的文件我已经打包好了 下载高手链接&#xff1a;https://pan.baidu.com/s/1qJ81sNBzzzU0w6DWf-9Nxw?pwdl09r 提取码&#xff1a;l09r -…

PHP反序列化命令执行+PHP反序列化POP大链 +PHP反序列化基础

[题目信息]&#xff1a; 题目名称题目难度PHP反序列化命令执行1 [题目考点]&#xff1a; 反序列化命令执行&#xff0c;获取题目flag。[Flag格式]: SangFor{t5euvZ_OB8Jd_h2-}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 docker-compose up …

DataGrip2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 DataGrip是由JetBrains公司开发的一款强大的关系数据库集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为数据库开发人员和数据库管理员设计。它提供了一个统一的界面&#xff0c;用于管理和开发各种关系型数据库&#x…

用于半监督的图扩散网络 笔记

1 Title Graph Neural Diffusion Networks for Semi-supervised Learning&#xff08;Wei Ye, Zexi Huang, Yunqi Hong, and Ambuj Singh&#xff09;【2022】 2 Conclusion This paper proposes a new graph neural network called GND-Nets (for Graph Neural Diffu…

计算股价波动率python

上述图片上传gemini&#xff0c;提问&#xff1a;转换为python代码 好的&#xff0c;以下是您发送的图像中公式的 Python 代码&#xff1a; python def stock_volatility(prices, opening_prices, N): """ 计算股票价格的波动率。 参数&#xff1a; p…

vscode如何方便地添加todo和管理todo

如果想在vscode中更加方便的添加和管理TODO标签&#xff0c;比如添加高亮提醒和查看哪里有TODO标签等&#xff0c;就可以通过安装插件快速实现。 安装插件 VSCode关于TODO使用人数最多的插件是TODO Height和Todo Tree 按住 CtrlShiftX按键进入应用扩展商店&#xff0c;输入to…

潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏

游戏名称&#xff1a;潮玩宇宙大逃杀 游戏类型&#xff1a;休闲竞技类小游戏 游戏目标&#xff1a;玩家通过选择房间躲避杀手&#xff0c;生存下来并瓜分被杀房间的元宝。 核心功能 房间选择&#xff1a;玩家进入游戏后&#xff0c;可以选择一间房间躲避杀手。杀手行动&…

机器学习——自动驾驶

本章我们主要学习以下内容: 阅读自动驾驶论文采集数据根据论文搭建自动驾驶神经网络训练模型在仿真环境中进行自动驾驶 论文介绍 本文参考自2016年英伟达发表的论文《End to End Learning for Self-Driving Cars》 📎end2end.pdf

c语言中的数组

数组 数组是一种构造类型&#xff0c;是由基本类型构造而成。当我们想用一群变量来描述同一类相同的东西时候&#xff0c;比如100个年龄变量&#xff0c;我们可以这样int age1&#xff1b;int age2&#xff1b;int age3&#xff1b;……int age 100;这样即不方便书写&#xff…

通过腾讯云搭建跨境电商demo的详细操作过程(建站系统 保姆级指导,巨详细)

引言&#xff1a; 有许多做跨境电商的朋友&#xff0c;或者为跨境电商服务的小企业&#xff0c;都会面临搭建电商平台V1.0的问题 因此&#xff0c;花了点时间&#xff0c;找了一个开源的项目&#xff0c;让大家可以跑起来&#xff0c;一方面了解平台都有哪些模块&#xff0c;另…

揭秘ebay、亚马逊测评系统:从稳定环境搭建到防关联技术

在亚马逊、ebay平台上进行自养号测评、L ka等活动&#xff0c;首要问题是确保环境的安全性和稳定性。一个稳定的环境是进行测评的基础&#xff0c;如果无法解决安全性问题&#xff0c;那么从事这些项目就不值得。我们在环境技术研发领域已经有8年的经验&#xff0c;在早期测试了…

创建k8s deploy yaml文件的imagePullSecrets语句

镜像仓库是harbor kubectl create secret docker-registry key --docker-server192.168.0.190 --docker-usernameadmin --docker-passwordHarbor12345

Lagent AgentLego 智能体介绍

本文主要介绍智能体相关基础知识&#xff0c;主流的智能体开源项目&#xff0c;重点介绍Lagent智能体和AgentLego框架。 一. 为什么要有智能体 目前的大预言模型有一些局限性&#xff0c;包括有时候会生成虚假信息&#xff0c;也就是我们说的“大模型胡言乱语”&#xff0c;还…

LeetCode 每日一题 Day 123-136

1379. 找出克隆二叉树中的相同节点 给你两棵二叉树&#xff0c;原始树 original 和克隆树 cloned&#xff0c;以及一个位于原始树 original 中的目标节点 target。 其中&#xff0c;克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中&#xff0c;与 tar…