计算机毕业设计:基于python人脸识别考勤系统 OpenCV+Dlib(包含文档+源码+部署教程)

这篇具有很好参考价值的文章主要介绍了计算机毕业设计:基于python人脸识别考勤系统 OpenCV+Dlib(包含文档+源码+部署教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。

1、项目介绍

Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库

方法实现、实现步骤
1、实例化人脸检测模型、人脸关键点检测模型、人脸识别模型
2、电脑摄像头设备加载一对图片
3、分别获取图片中的人脸图片所映射的空间向量,即人脸特征值
4、计算特征向量欧氏距离,根据阈值判断是否为同一个人

2、项目界面

(1)摄像头人脸识别界面
基于python的课堂人脸识别签到系统源码,毕业设计,biyesheji0002,biyesheji0001,课程设计,python,opencv,深度学习,人工智能

(2)人脸识别记录
基于python的课堂人脸识别签到系统源码,毕业设计,biyesheji0002,biyesheji0001,课程设计,python,opencv,深度学习,人工智能

(3)人脸录入界面
基于python的课堂人脸识别签到系统源码,毕业设计,biyesheji0002,biyesheji0001,课程设计,python,opencv,深度学习,人工智能

(4)数据库管理界面

基于python的课堂人脸识别签到系统源码,毕业设计,biyesheji0002,biyesheji0001,课程设计,python,opencv,深度学习,人工智能

(5)关于界面

基于python的课堂人脸识别签到系统源码,毕业设计,biyesheji0002,biyesheji0001,课程设计,python,opencv,深度学习,人工智能

3、项目说明

Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库

本系统使用dlib作为人脸识别工具,dlib提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并映射到128维空间向量再度量它们的欧氏距离是否足够小来判定是否为同一个人。

方法实现、实现步骤
1、实例化人脸检测模型、人脸关键点检测模型、人脸识别模型
2、电脑摄像头设备加载一对图片
3、分别获取图片中的人脸图片所映射的空间向量,即人脸特征值
4、计算特征向量欧氏距离,根据阈值判断是否为同一个人

开发技术环境: Pycharm + Python3.6 + PyQt5 + OpenCV + 人脸特征模型

本系统先调取opencv摄像头进行人脸信息拍照然后识别人脸特征数据,并且录入自己的学号姓名,将识别的人脸特征向量信息保存到人脸数据库当中产生数据记录,并且可以按照学号搜索人脸数据库当中的学生信息,可以修改学生的姓名以及学号等,学生录入进自己的人脸信息后可以进行人脸识别,人脸识别主要是调用opencv打开摄像头拍摄自己的人脸然后调取人脸模型进行识别,将识别到的人脸特征向量和人脸库中的特征向量匹配并计算出相似度,如果匹配相似度太低则提示不存在请您先录入人脸信息,匹配度达到百分七十以及八十以上则匹配出数据库里面对应的学生识别记录,并且形成识别记录,这个识别记录也是可以搜索修改和删除的。

4、部分代码

from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore
from control.mainWindow import MyWindow
import sys

#PyQt使用高分辨率
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

#主函数
if __name__ == '__main__':
    app = QApplication(sys.argv)
    #实例化主界面
    myWin = MyWindow()
    #显示主界面
    myWin.show()
    sys.exit(app.exec_())


from datetime import datetime
import time

#find the course  attend
def find_current_course(tableDict):
    have_class = 0
    course_name = None
    classroom = None
    start_time = None
    end_time =None
    late = 0

    current_time = datetime.now().strftime("%H:%M")
    current_week = int(time.strftime("%w"))
    current_week_key = list(tableDict.keys())[current_week - 1]
    today_course = tableDict[current_week_key]
    if current_week in [0,6]:
        print("None")
        return have_class,course_name,classroom,start_time,end_time,late
    else:
        print(today_course)
        min_diff_time = 24 * 60
        for course in today_course:
            if course != []:
                if in_course_time(course[2],course[3],current_time):
                    print(in_course_time(course[2],course[3],current_time))
                    have_class = 1
                    course_name = course[0]
                    classroom = course[1]
                    start_time = course[2]
                    end_time = course[3]
                    late = 1
                    return have_class,course_name,classroom,start_time,end_time,late
                else:
                    current_diff_time = diff_time(course[2],current_time)
                    if current_diff_time <= 0 and current_diff_time < min_diff_time:
                        min_diff_time = current_diff_time
                        print("min_time:{}".format(min_diff_time))
                        have_class = 1
                        course_name = course[0]
                        classroom = course[1]
                        start_time = course[2]
                        end_time = course[3]
                        late = 0
                        return have_class, course_name, classroom, start_time, end_time, late
        print("None")
        return have_class, course_name, classroom, start_time, end_time, late
    print(current_time)
    print(current_week)

# the difference of two time
def diff_time(time1,time2):
    t1,m1 = int(time1.split(':')[0]), int(time1.split(':')[1])
    t2, m2 = int(time2.split(':')[0]), int(time2.split(':')[1])
    time1_min = t1 * 60 + m1
    time2_min = t2 * 60 + m2
    return time2_min - time1_min

#current time is in course time?
def in_course_time(start_time,end_time,current_time):
    if diff_time(start_time,current_time) > 0 and diff_time(end_time,current_time) < 0:
        return True
    else:
        return False


源码获取:

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看主页【专栏名称】或者【用户名】或者顶部的【选题链接】就可以找到我获取项目源码学习啦~🍅

大家点赞、收藏、关注、评论啦 ! 文章来源地址https://www.toymoban.com/news/detail-764367.html

到了这里,关于计算机毕业设计:基于python人脸识别考勤系统 OpenCV+Dlib(包含文档+源码+部署教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包