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

无法打开网站若要访问本地iis网站必须安装下列iis组件传媒网站

无法打开网站若要访问本地iis网站必须安装下列iis组件,传媒网站,做网站webform mvc,帮诈骗公司做网站随着技术的不断进步,人脸识别技术已经在各行各业得到了广泛的应用,尤其在 考勤管理 上,它提供了更加智能、便捷、精准的解决方案。本篇博客将介绍如何基于 PyQt5 和 MySQL 实现一个 人脸识别考勤系统,并通过具体代码展示如何通过图…

        随着技术的不断进步,人脸识别技术已经在各行各业得到了广泛的应用,尤其在 考勤管理 上,它提供了更加智能、便捷、精准的解决方案。本篇博客将介绍如何基于 PyQt5MySQL 实现一个 人脸识别考勤系统,并通过具体代码展示如何通过图形界面管理人员考勤数据,结合人脸识别模块,使得考勤系统更加高效和自动化。

完整代码:利用CNN实现人脸识别考勤系统

项目背景

        本项目的目标是构建一个基于 人脸识别技术 的考勤系统,其中使用 PyQt5 创建图形用户界面(GUI),MySQL 作为数据存储,利用 人脸识别 实现人员身份验证,并根据验证结果进行考勤记录。系统功能主要包括:

  1. 人员信息管理:可以添加、删除、修改员工信息。
  2. 考勤记录管理:员工考勤数据的自动记录与查询。
  3. 人脸识别验证:通过摄像头对员工进行人脸识别,自动打卡。

技术栈

  • PyQt5:构建桌面应用的界面,负责用户与系统的交互。
  • MySQL:存储员工信息和考勤数据。
  • 人脸识别库(如 OpenCV 和 face_recognition):用于识别人脸并进行考勤打卡。
  • Python:处理系统逻辑,控制整个应用的运行。

核心功能

  1. 用户管理功能(增、删、改、查)
  2. 考勤记录功能(自动打卡与查询)
  3. 人脸识别功能(打卡验证)


1. 数据库管理:连接与操作

        首先,我们需要一个数据库管理类 DatabaseManager 来封装与 MySQL 数据库的交互。我们存储员工信息(如姓名、员工ID、人脸数据)以及考勤记录(考勤时间和员工ID)。

关键代码:数据库管理
class DatabaseManager:def __init__(self, host='localhost', database='face_attendance', user='root', password='rootyang'):"""初始化数据库连接"""try:self.conn = mysql.connector.connect(host=host, database=database, user=user, password=password)if self.conn.is_connected():print("Database connection successful")except Error as e:QMessageBox.critical(None, "数据库连接", f"连接MySQL数据库时发生错误: {e}")def fetch_data(self, keyword=''):"""从数据库获取数据,支持关键词搜索"""if self.conn and self.conn.is_connected():cursor = self.conn.cursor()query = "SELECT id, name, employee_id, gender FROM people WHERE name LIKE %s OR employee_id LIKE %s"cursor.execute(query, ('%' + keyword + '%', '%' + keyword + '%'))results = cursor.fetchall()cursor.close()return resultsreturn []def insert_person(self, name, employee_id, gender, face_encoding):"""向数据库中添加一个新用户"""try:cursor = self.conn.cursor()query = "INSERT INTO people (name, employee_id, gender, face_encoding) VALUES (%s, %s, %s, %s)"cursor.execute(query, (name, employee_id, gender, face_encoding))self.conn.commit()cursor.close()except mysql.connector.IntegrityError as e:raise e  # 将异常向上抛出,由调用者处理def update_person(self, id, name, employee_id, gender, face_encoding):"""更新数据库中的一个用户的信息"""if self.conn and self.conn.is_connected():cursor = self.conn.cursor()query = "UPDATE people SET name=%s, employee_id=%s, gender=%s, face_encoding=%s WHERE id=%s"cursor.execute(query, (name, employee_id, gender, face_encoding, id))self.conn.commit()cursor.close()
解释
  • face_encoding:我们将人脸数据(如人脸特征向量)存储在数据库中,供后续的识别验证使用。
  • insert_person:将员工信息与人脸特征数据插入到数据库中。
  • update_person:更新员工信息,特别是员工的人脸数据(当员工更新照片时)。

2. 人脸识别与考勤打卡

        为了实现人脸识别功能,我们使用 OpenCVface_recognition 库。通过摄像头捕捉员工的面部图像,与数据库中存储的人脸特征进行匹配,从而进行考勤打卡。

关键代码:人脸识别与考勤打卡
import face_recognition
import cv2
import numpy as np
from datetime import datetimeclass AttendanceSystem:def __init__(self, db_manager):self.db_manager = db_managerself.known_faces = []  # 存储所有已知员工的人脸特征self.known_face_names = []  # 存储员工姓名self.load_known_faces()def load_known_faces(self):"""加载数据库中所有员工的人脸数据"""data = self.db_manager.fetch_data()for row in data:face_encoding = np.frombuffer(row[4], dtype=np.float64)  # 假设face_encoding存储为二进制数据self.known_faces.append(face_encoding)self.known_face_names.append(row[1])  # 员工姓名def recognize_face(self):"""通过摄像头进行人脸识别并记录考勤"""video_capture = cv2.VideoCapture(0)while True:ret, frame = video_capture.read()rgb_frame = frame[:, :, ::-1]  # 转换为RGB格式# 查找所有人脸和对应的面部特征face_locations = face_recognition.face_locations(rgb_frame)face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):matches = face_recognition.compare_faces(self.known_faces, face_encoding)name = "未知员工"if True in matches:first_match_index = matches.index(True)name = self.known_face_names[first_match_index]self.record_attendance(name)# 在图像上画出人脸的位置并标注员工姓名cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)font = cv2.FONT_HERSHEY_DUPLEXcv2.putText(frame, name, (left + 6, bottom - 6), font, 0.5, (255, 255, 255), 1)# 显示图像cv2.imshow('Video', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakvideo_capture.release()cv2.destroyAllWindows()def record_attendance(self, name):"""记录考勤信息"""time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")print(f"{name} 打卡成功,时间:{time_now}")# 记录考勤到数据库cursor = self.db_manager.conn.cursor()cursor.execute("INSERT INTO attendance_records (employee_name, time) VALUES (%s, %s)", (name, time_now))self.db_manager.conn.commit()cursor.close()
解释
  • 人脸识别:通过 face_recognition 库识别员工的面部特征,并与数据库中的已知员工数据进行比对。
  • record_attendance:如果人脸识别成功,系统会记录当前时间和员工姓名,自动生成考勤记录。
  • load_known_faces:从数据库加载所有员工的人脸特征数据到内存中,以便进行比对。

3. 用户管理界面:图形界面的设计

        为了提供便捷的管理功能,我们使用 PyQt5 构建了一个用户管理界面,支持员工信息的增删改查。

关键代码:管理界面
class AdminUI(QMainWindow):def __init__(self, db_manager, attendance_system):"""初始化界面和组件"""super().__init__()self.db_manager = db_managerself.attendance_system = attendance_systemself.init_ui()def init_ui(self):"""设置UI界面的布局和组件"""self.setWindowTitle("管理员管理界面")self.setGeometry(100, 100, 800, 600)main_widget = QWidget()self.setCentralWidget(main_widget)main_layout = QVBoxLayout()main_widget.setLayout(main_layout)# 添加用户按钮self.add_button = QPushButton("添加新员工")self.add_button.clicked.connect(self.add_user)# 开始考勤按钮self.attendance_button = QPushButton("开始考勤")self.attendance_button.clicked.connect(self.attendance_system.recognize_face)main_layout.addWidget(self.add_button)main_layout.addWidget(self.attendance_button)def add_user(self):"""添加新用户的函数"""dialog = UserDialog(self)if dialog.exec_() == QDialog.Accepted:user_data = dialog.get_data()face_encoding = self.attendance_system.get_face_encoding(user_data['employee_id'])self.db_manager.insert_person(user_data['name'], user_data['employee_id'], user_data['gender'], face_encoding)
解释
  • add_user:通过弹出对话框添加员工,并将员工的面部特征存储到数据库中。
  • attendance_button:点击该按钮启动人脸识别功能进行考勤打卡。

总结

        通过结合 PyQt5MySQL人脸识别技术,我们实现了一个智能化的 考勤管理系统。该系统不仅能通过图形界面进行员工信息管理,还能通过人脸识别自动打卡,大大提高了考勤管理的效率。

        未来,我们可以进一步拓展系统功能,如员工权限管理、数据分析与报告生成等,使其更加完备和智能化。

http://www.ritt.cn/news/27590.html

相关文章:

  • 开发一个app要多久北京度seo排名
  • 在做网站编代码网页导航条中的文字出现在导航条的下方怎莫解决常用seo站长工具
  • 一般网站建设流程关键词优化排名详细步骤
  • 招工做的网站免费网站推广软件哪个好
  • wordpress聊天主题佛山快速排名seo
  • 建网站要什么工做人员狠抓措施落实
  • 怎么做属于自己的音乐网站市场调研报告ppt模板
  • 软件开发培训哪里好seo中国
  • 网页网站设计公司排行榜怎么接app推广的单子
  • 文山市住房和城乡建设局网站广点通推广登录入口
  • 做科学小制作的视频网站优秀网站网页设计
  • 免费网站打包百度网盟
  • 化州网站建设桂林seo排名
  • 网站开发中的网页上传和网站发布seo运营推广
  • 黄浦区seo网站建设百度快速排名化
  • flask网站开发视频企业官网怎么做
  • 我们不仅仅做网站更懂得网络营销互联网怎么打广告推广
  • 临海高端营销型网站建设地址游戏推广文案
  • 做网站最大可以做多少g网站外链是什么
  • 花生壳盒子做网站服务器企业网站怎么注册官网
  • 网站建设 石家庄已矣seo排名点击软件
  • 有域名如何建设网站百度竞价渠道户
  • 计算机网络网站广州最新发布最新
  • 有些网站勤换域名seo外包公司需要什么
  • 网站改版策划书电话投放小网站
  • 办公室设计公司专业网站福州seo推广外包
  • 建设工程项目查询网站互联网产品推广是做什么的
  • 南阳医疗网站制作价格厦门专业做优化的公司
  • 清除网站黑链微信拓客的最新方法
  • 做抽奖网站用什么cms百度地图排名怎么优化