基于Python Django的人脸识别上课考勤系统(附源码,部署)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

Python项目实战《100套》

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

引言

Hello,大家好,这里是程序员徐师兄!今天带大家来搞点硬核的东西------基于 Python Django 开发一个人脸识别考勤系统。这个系统主要应用于学校课堂或者公司签到场景,利用 OpenCV 和 dlib 进行人脸检测,再结合 Django + MySQL 实现考勤数据管理。

咱们这篇文章会从 环境搭建、数据库设计、人脸识别、考勤逻辑、前端展示 这些方面详细拆解,让你一次学个透!

基于 Python Django的人脸识别上课考勤系统

技术选型

咱们这个项目主要使用以下技术栈:

  • 后端:Python 3.8 + Django 4.x
  • 人脸识别:OpenCV + dlib
  • 数据库:MySQL
  • 前端:LayUI + jQuery
  • 硬件:USB 摄像头

环境搭建

  1. 安装 Python(Windows / Mac / Linux 均可)
  2. 安装依赖库
bash 复制代码
pip install django opencv-python dlib mysqlclient
  1. 创建 Django 项目
bash 复制代码
django-admin startproject attendance_system
cd attendance_system
python manage.py startapp face_attendance
  1. 配置 MySQL 连接settings.py
python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'attendance_db',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

数据库设计

python 复制代码
from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=100)
    face_encoding = models.BinaryField()  # 存储人脸特征

class AttendanceRecord(models.Model):
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    check_in_time = models.DateTimeField(auto_now_add=True)

人脸识别模块

python 复制代码
import dlib
import cv2

# 初始化人脸检测器
face_detector = dlib.get_frontal_face_detector()
face_recognition_model = dlib.face_recognition_model_v1("dlib_face_recognition_resnet_model_v1.dat")

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break

    faces = face_detector(frame, 1)
    for face in faces:
        face_encoding = face_recognition_model.compute_face_descriptor(frame, face)
        # 在数据库中匹配该 face_encoding

    cv2.imshow("Face Recognition", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

考勤逻辑

python 复制代码
from .models import Student, AttendanceRecord
from datetime import datetime

def record_attendance(student_id):
    student = Student.objects.get(id=student_id)
    record = AttendanceRecord(student=student, check_in_time=datetime.now())
    record.save()

前端界面

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>考勤系统</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.7/css/layui.css">
</head>
<body>
    <table class="layui-hide" id="attendanceTable" lay-filter="attendanceTable"></table>

    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/layui/2.5.7/layui.js"></script>
    <script>
        layui.use('table', function(){
            var table = layui.table;
            table.render({
                elem: '#attendanceTable',
                url: '/attendance/data/',
                cols: [[
                    {field: 'name', title: '姓名'},
                    {field: 'check_in_time', title: '签到时间'}
                ]]
            });
        });
    </script>
</body>
</html>

结语

这样,一个完整的 基于 Python Django 的人脸识别考勤系统 就完成了!

你学到了什么?

  • 如何使用 OpenCV + dlib 进行人脸识别
  • 如何用 Django 设计数据库和实现考勤逻辑
  • 如何用 LayUI 搭建简洁高效的前端界面

源码获取:

大家点赞、收藏、关注、评论 啦 、查看 👇🏻获取联系方式👇🏻

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

Python项目实战《100套》

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

相关推荐
xxjj998a8 小时前
Laravel3.x:奠定现代PHP框架的重要里程碑
android·开发语言·php
小熊Coding8 小时前
懂车帝汽车销售数据可视化分析系统
python·信息可视化·django·汽车·数据可视化分析·懂车帝·汽车销售数据分析
X56618 小时前
c++ aot编程 c++如何使用oneapi进行跨平台并行编程
jvm·数据库·python
2501_901006478 小时前
如何按优先级控制 Flex 容器中子元素的截断顺序
jvm·数据库·python
日光明媚8 小时前
torch.compile 与 Triton 的加速本质:从原理到实际效果
人工智能·python·计算机视觉·stable diffusion·aigc
m0_624578598 小时前
CSS如何优化Bootstrap加载速度_利用CSS压缩技术减少体积
jvm·数据库·python
(Charon)8 小时前
【C++/Qt】Qt 实现 MQTT 测试工具:连接 Broker、订阅主题与发布消息
开发语言·c++·qt
Ulyanov8 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:动态数据仪表盘与 NumPy 可视化 —— 从标量到向量的数据驱动进化
开发语言·python·qt·架构·numpy
深蓝海拓9 小时前
PySide6,图形按钮使用系统内置图标
笔记·python·学习·pyqt
小短腿的代码世界9 小时前
Qt序列化与持久化深度解析:从QDataStream到自定义二进制协议
开发语言·数据库·qt