OpenCV+ Qt Designer 开发人脸识别考勤系统

这篇具有很好参考价值的文章主要介绍了OpenCV+ Qt Designer 开发人脸识别考勤系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 系统介绍

本系统是一个基于OpenCV和 Qt Designer 的人脸识别考勤系统,主要功能是自动识别摄像头中的人脸,并把人脸对应的姓名和打卡时间存储到数据库中,方便管理人员进行考勤管理。本系统使用 face_recognition 库进行人脸识别,使用 PyQt5 开发界面,然后把界面与代码进行整合。

2. 系统架构

系统主要由以下几个模块组成:

用户界面:使用 PyQt5 设计界面,包括摄像头画面、人脸识别结果、打卡时间等。
摄像头模块:使用 OpenCV 库获取摄像头视频流,实时显示在用户界面中。
人脸识别模块:使用 face_recognition 库进行人脸识别,并将结果显示在用户界面中。
数据库模块:使用 sqlite3 库进行数据存储,把人脸对应的姓名和打卡时间存储到数据库中。

3. 开发步骤

3.1 安装必要的库

本系统需要的主要库有:

PyQt5:用于设计用户界面。
OpenCV:用于获取摄像头视频流。
face_recognition:用于进行人脸识别。
sqlite3:用于进行数据存储。
可以通过以下命令安装:

pip install pyqt5 opencv-python face_recognition sqlite3

3.2 设计用户界面

使用 Qt Designer 设计用户界面。用户界面应该包括以下几个部分:

摄像头画面:用于实时显示摄像头视频流。
人脸识别结果:用于显示识别出的人脸及对应的姓名。
打卡时间:用于显示打卡时间。
打卡按钮:用于手动打卡。
可以参考下面的截图:

OpenCV+ Qt Designer 开发人脸识别考勤系统

3.3 编写代码

3.3.1 导入库

import sys
import cv2
import face_recognition
import sqlite3
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QDialog, QLabel, QPushButton

3.3.2 连接数据库

conn = sqlite3.connect('attendance.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS attendance
             (name TEXT, time TEXT)''')
conn.commit()

3.3.3 定义主窗口类

class MainWindow(QDialog):
    def __init__(self):
        super().__init__()

        self.camera_label = QLabel(self)
        self.camera_label.resize(640, 480)
        self.camera_label.move(20, 20)

        self.result_label = QLabel(self)
        self.result_label.resize(300, 300)
        self.result_label.move(700, 20)

        self.time_label = QLabel(self)
        self.time_label.resize(300, 50)
        self.time_label.move(700, 350)

        self.button = QPushButton('打卡', self)
        self.button.resize(100, 50)
        self.button.move(700, 420)
        self.button.clicked.connect(self.check_attendance)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.show_camera)
        self.timer.start(30)

        self.video_capture = cv2.VideoCapture(0)

        self.setGeometry(100, 100, 1024, 480)
        self.setWindowTitle('人脸识别考勤系统')

3.3.4 实时显示摄像头画面

 def show_camera(self):
        ret, frame = self.video_capture.read()
        frame = cv2.flip(frame, 1)
        rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        self.display_image(rgb_frame, self.camera_label)

3.3.5 进行人脸识别

  def face_recognition(self, frame):
        face_locations = face_recognition.face_locations(frame)
        face_encodings = face_recognition.face_encodings(frame, face_locations)

        for face_encoding in face_encodings:
            matches = face_recognition.compare_faces(known_faces, face_encoding)
            name = "Unknown"

            face_distances = face_recognition.face_distance(known_faces, face_encoding)
            best_match_index = np.argmin(face_distances)

            if matches[best_match_index]:
                name = known_names[best_match_index]

            self.display_image(frame, self.result_label)
            self.result_label.setText(name)

            if name != 'Unknown':
                c.execute("INSERT INTO attendance VALUES (?, datetime('now', 'localtime'))", (name,))
                conn.commit()

3.3.6 手动打卡

  def check_attendance(self):
        name = self.result_label.text()
        if name != 'Unknown':
            c.execute("INSERT INTO attendance VALUES (?, datetime('now', 'localtime'))", (name,))

            conn.commit()

3.3.7 显示打卡时间

 def show_time(self):
        c.execute("SELECT * FROM attendance ORDER BY time DESC")
        result = c.fetchone()
        if result:
            name, time = result
            self.time_label.setText(f"{name} 打卡时间:{time}")

3.3.8 显示图片

  def display_image(self, img, label):
        qformat = QImage.Format_Indexed8
        if len(img.shape) == 3:
            if img.shape[2] == 4:
                qformat = QImage.Format_RGBA8888
            else:
                qformat = QImage.Format_RGB888
        img = QImage(img, img.shape[1], img.shape[0], qformat)
        img = img.rgbSwapped()
        label.setPixmap(QPixmap.fromImage(img))
        label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

3.3.9 运行主程序

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

4. 总结

本文介绍了如何使用 Python 和 Qt Designer 开发人脸识别考勤系统。该系统可以自动识别摄像头中的人脸,并把人脸对应的姓名和打卡时间存储到数据库中,方便管理人员进行考勤管理。希望本文对您有所帮助。文章来源地址https://www.toymoban.com/news/detail-459508.html

到了这里,关于OpenCV+ Qt Designer 开发人脸识别考勤系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python基于 opencv 的人脸识别考勤系统(V1.0),附源码

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月26日
    浏览(78)
  • 基于 opencv 的人脸识别上课考勤系统,附源码,可作为毕业设计

    这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的。 项目使用Python实现,基于OpenCV框架进行人脸识别和摄像头硬件调用,同时也用OpenCV工具包处理图片。交互界面使用pyqt5实现。 该系统实现了从学生信息输入、人脸数据录入、人脸数据训练,学生信

    2024年02月08日
    浏览(72)
  • Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码

    源码下载地址https://download.csdn.net/download/2302_77835532/88237252 这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的。 项目使用Python实现,基于OpenCV框架进行人脸识别和摄像头硬件调用,同时也用OpenCV工具包处理图片。交互界面使用pyqt5实现。 该系统实现

    2024年02月05日
    浏览(73)
  • 【计算机毕设项目】基于opencv、dilb的员工人脸识别考勤系统

    基于opencv、dilb的员工人脸识别考勤系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 选题“员工刷脸考勤”,要求采用python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部

    2024年02月03日
    浏览(51)
  • python人脸识别考勤系统 dlib+OpenCV和Pyqt5、数据库sqlite 人脸识别系统 计算机 毕业设计 源码

    Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库 本系统使用dlib作为人脸识别工具,dlib提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并映射到

    2024年02月08日
    浏览(57)
  • 计算机毕业设计:基于python人脸识别考勤系统 OpenCV+Dlib(包含文档+源码+部署教程)

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库 方法实现、实现步骤 1、实例化人脸检测

    2024年02月04日
    浏览(68)
  • 【旧文更新】【优秀毕设】人脸识别打卡/签到/考勤管理系统(OpenCV+最简基本库开发、可移植树莓派 扩展网络图像推流控制 验证码及Excel邮件发送等功能)

    【旧文更新】【优秀毕设】人脸识别打卡/签到/考勤管理系统(OpenCV+最简基本库开发、可移植树莓派 扩展网络图像推流控制 验证码及Excel邮件发送等功能) 为何要进行旧文新发? 因为我在2023年博客之星评选中发现 有的人转载、抄袭他人文章 稍微改动几下也能作为高质量文

    2024年02月20日
    浏览(65)
  • 毕设项目-人脸识别考勤签到系统

    人脸识别小程序、签到小程序,借助百度AI智能识别功能实现。 学生信息管理,考勤管理,人脸识别处理大概这三个模块。 功能模块: 登录与注册(两种身份 老师或学生) 课程发布(老师可以发布课程信息 名称 地点 选课人数) 课程查看(学生查看课程信息) 人脸录入(

    2023年04月08日
    浏览(82)
  • 基于Python的人脸识别课堂考勤系统(毕设)

    一个菜鸟搞毕业设计的过程分享,可能对迷茫的你起到一点点作用! 在着手开发项目之前我们一定要对系统进行一个初步的规划,比如系统可以实现什么功能,是否需要开发GUI页面(大部分导师都会让你搞一个,仅仅少的导师不用你搞),如果需要可以对GUI页面就行一个简单

    2023年04月08日
    浏览(41)
  • 百度智能AI接口:人脸识别考勤签到系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月05日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包