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

基于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. 安装依赖库
pip install django opencv-python dlib mysqlclient
  1. 创建 Django 项目
django-admin startproject attendance_system
cd attendance_system
python manage.py startapp face_attendance
  1. 配置 MySQL 连接settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'attendance_db','USER': 'root','PASSWORD': '123456','HOST': 'localhost','PORT': '3306',}
}

数据库设计

系统预览

from django.db import modelsclass 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)

人脸识别模块

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:breakfaces = face_detector(frame, 1)for face in faces:face_encoding = face_recognition_model.compute_face_descriptor(frame, face)# 在数据库中匹配该 face_encodingcv2.imshow("Face Recognition", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

考勤逻辑

from .models import Student, AttendanceRecord
from datetime import datetimedef record_attendance(student_id):student = Student.objects.get(id=student_id)record = AttendanceRecord(student=student, check_in_time=datetime.now())record.save()

前端界面

<!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套》

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

相关文章:

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

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

神经网络之RNN和LSTM(基于pytorch-api)

1.RNN 1.1简介 RNN用于处理序列数据。在传统的神经网络模型中&#xff0c;是从输入层到隐含层再到输出层&#xff0c;层与层之间是全连接的&#xff0c;每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如&#xff0c;你要预测句子的下一个单词是…...

leetcode第39题组合总和

原题出于leetcode第39题https://leetcode.cn/problems/combination-sum/description/题目如下&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以…...

【UI设计——视频播放界面分享】

视频播放界面设计分享 在本次设计分享中&#xff0c;带来一个视频播放界面的设计作品。 此界面采用了简洁直观的布局。顶部是导航栏&#xff0c;包含主页、播放、搜索框等常见功能&#xff0c;方便用户快速找到所需操作。搜索框旁输入 “萌宠成长记”&#xff0c;体现了对特定内…...

动态规划刷题

文章目录 动态规划三步问题题目解析代码 动态规划 1. 状态表示&#xff1a;dp[i]&#xff0c;表示dp表中i下标位置的值 2. 状态转移方程&#xff1a;以i位置位置的状态&#xff0c;最近的一步来划分问题&#xff0c;比如可以将状态拆分成前状态来表示现状态&#xff0c;dp[i] …...

stm32week5

stm32学习 二.外设 14.串口发送数据包 数据包的定义&#xff1a; HEX数据包(以0xFF为包头&#xff0c;0xFE为包尾&#xff0c;实际上可自定义)&#xff1a; 固定包长&#xff0c;含包头包尾可变包长&#xff0c;含包头包尾 对于数据中不会出现包头包尾的数据可以用可变包长…...

fastapi中的patch请求

目录 示例测试使用 curl 访问&#xff1a;使用 requests 访问&#xff1a;预期返回&#xff1a; 浏览器访问 示例 下面是一个使用 app.patch("") 的 FastAPI 示例&#xff0c;该示例实现了一个简单的用户信息更新 API。我们使用 pydantic 定义数据模型&#xff0c;并…...

系统架构设计师—计算机基础篇—计算机网络

文章目录 网络互联模型网络协议与标准应用层协议FTP协议TFTP协议 HTTP协议HTTPS协议 DHCP动态主机配置协议DNS协议迭代查询递归查询 传输层协议网络层协议IPV4协议IPV6协议IPV6数据报的目的地址IPV4到IPV6的过渡技术 网络设计分层设计接入层汇聚层核心层 网络布线综合布线系统工…...

MATLAB中asManyOfPattern函数用法

目录 语法 说明 示例 匹配尽可能多的模式实例 指定要匹配的最小模式数 指定要匹配的最小和最大模式数 asManyOfPattern函数的功能是模式匹配次数尽可能多。 语法 newpat asManyOfPattern(pat) newpat asManyOfPattern(pat,minPattern) newpat asManyOfPattern(pat,m…...

Kafka面试题及原理

1. 消息可靠性&#xff08;不丢失&#xff09; 使用Kafka在消息的收发过程都会出现消息丢失&#xff0c;Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker 幂等方案&#xff1a;【分布式锁、数据库锁&#xff08;悲观锁、乐观锁…...

Grok 3 AI 角色扮演提示词 化身顶级设计师

Grok 3&#xff1a;设计下一个大型软件项目的终极工具 &#x1f525; Grok 3 是一个革命性的工具&#xff0c;能够在短短 一小时 内&#xff0c;帮助你完成软件项目设计中最关键的步骤。无论是创建用户画像、设计网站地图&#xff0c;还是编写用户故事及验收标准&#xff0c;G…...

从零开始设计一个完整的网站:HTML、CSS、PHP、MySQL 和 JavaScript 实战教程

前言 本文将从实战角度出发&#xff0c;带你一步步设计一个完整的网站。我们将从 静态网页 开始&#xff0c;然后加入 动态功能&#xff08;使用 PHP&#xff09;&#xff0c;连接 数据库&#xff0c;最后加入 JavaScript 实现交互功能。通过这个教程&#xff0c;你将掌握一个…...

CSS 对齐:深入理解与技巧实践

CSS 对齐:深入理解与技巧实践 引言 在网页设计中,元素的对齐是至关重要的。一个页面中元素的对齐方式直接影响到页面的美观度和用户体验。CSS 提供了丰富的对齐属性,使得开发者可以轻松实现各种对齐效果。本文将深入探讨 CSS 对齐的原理、方法和技巧,帮助开发者更好地掌握…...

oracle游标为什么没有共享,统计一下原因

-- Script Code为什么没共享 define sql_id bs391f0yq5tpw;set serveroutput onDECLAREv_count number;v_sql varchar2(500);v_sql_id varchar2(30) : &sql_id; BEGINv_sql_id : lower(v_sql_id);dbms_output.put_line(chr(13)||chr(10));dbms_output.put_line(sql_id: ||…...

IDEA中.gitignore未忽略指定文件的问题排查与解决

IDEA 中.gitignore 未忽略.env 文件的问题排查与解决 在使用 IntelliJ IDEA 进行项目开发时,合理利用.gitignore文件来管理版本控制是非常重要的。它能帮助我们排除一些不需要纳入版本管理的文件,比如包含敏感信息的.env文件。然而,有时我们会遇到一种情况:明明已经将.env…...

通往 AI 之路:Python 机器学习入门-语法基础

第一章 Python 语法基础 Python 是一种简单易学的编程语言&#xff0c;广泛用于数据分析、机器学习和人工智能领域。在学习机器学习之前&#xff0c;我们需要先掌握 Python 的基本语法。本章将介绍 Python 的变量与数据类型、条件语句、循环、函数以及文件操作&#xff0c;帮助…...

形象生动讲解Linux 虚拟化 I/O

用现实生活的比喻和简单例子来解释 Linux 虚拟化 I/O&#xff0c;就像给朋友讲故事一样。 虚拟化 I/O 要解决什么问题&#xff1f; 想象你有一栋大房子&#xff08;物理服务器&#xff09;&#xff0c;想把它分割成多个小公寓&#xff08;虚拟机&#xff09;出租。每个租客&…...

6. Nginx 动静分离配置案例(附有详细说明+配图)

6. Nginx 动静分离配置案例(附有详细说明配图) 文章目录 6. Nginx 动静分离配置案例(附有详细说明配图)1. 动静分离概述说明2. 先使用传统方式实现&#xff0c;不使用 Nginx3. 使用上 Nginx 实现动静分离优化步骤4. 最后&#xff1a; 1. 动静分离概述说明 什么是动静分离&…...

数据集笔记:新加坡停车费

data.gov.sg 该数据集包含 新加坡各停车场的停车费&#xff0c;具体信息包括&#xff1a; 停车场名称&#xff08;Carpark&#xff09;&#xff1a;如 Toa Payoh Lorong 8、Ang Mo Kio Hub、Bras Basah Complex 等。停车区域类别&#xff08;Category&#xff09;&#xff1a…...

SQL经典题型

查询不在表里的数据&#xff0c;一张学生表&#xff0c;一张学生的选课表&#xff0c;要求查出没有选课的学生&#xff1f; select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…...

OpenClaw学习助手:Qwen2.5-VL-7B自动解析教材插图

OpenClaw学习助手&#xff1a;Qwen2.5-VL-7B自动解析教材插图 1. 为什么需要AI学习助手 作为一名经常需要阅读大量技术文档的开发者&#xff0c;我发现自己经常陷入"读得快忘得更快"的困境。特别是遇到包含复杂图表和公式的教材时&#xff0c;手动整理关键信息要耗…...

Zstats高级版教程(3):如何进行数据整理(下),分类变量如何设置对照组?设置值标签?

本篇是风暴统计平台教程系列的第三章&#xff0c;将详细说明如何使用数据整理模块&#xff0c;节省后续分析的时间。因为涉及内容比较多&#xff0c;分为上中下三篇&#xff0c;此为下篇。前两篇数据整理教程分别向大家详细介绍了数据整理模块的定量数据转分类、计算新变量、变…...

GHelper硬件控制工具:华硕笔记本性能优化与系统管理完全指南

GHelper硬件控制工具&#xff1a;华硕笔记本性能优化与系统管理完全指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Str…...

第198章 万物编译(秀秀)

弦光研究院物质科学中心的环形实验室内&#xff0c;空气仿佛凝固成了某种可见的期待&#xff0c;每一立方厘米都承载着对技术突破的深切盼望。秀秀独自站立在主控制台前&#xff0c;目光穿透层层防护屏障&#xff0c;聚焦在那个被超导磁体环绕的圆柱形真空腔内。腔内&#xff0…...

别再盲目调大`--max-memory`!Python服务成本失控的真正元凶藏在这3个被忽略的`__slots__`陷阱里

第一章&#xff1a;Python智能体内存管理策略成本控制策略Python智能体在长期运行、多任务并发或高频率推理场景下&#xff0c;内存使用易呈指数级增长&#xff0c;导致OOM异常与推理延迟上升。有效的内存管理不仅是稳定性保障&#xff0c;更是降低云资源成本的关键杠杆。核心策…...

OpenClaw自动化边界:gemma-3-12b-it不适合处理的5类任务分析

OpenClaw自动化边界&#xff1a;gemma-3-12b-it不适合处理的5类任务分析 1. 为什么需要明确自动化边界&#xff1f; 上周我在本地部署了OpenClawgemma-3-12b-it组合&#xff0c;本想让它帮我完成一些重复性工作。结果在测试过程中&#xff0c;一个简单的"整理桌面截图并…...

基于Quansar的双自由度直升机离散时间控制器的设计与仿真分析

基于Quansar的双自由度直升机离散时间控制器 简介&#xff1a;基于Quansar的双自由度直升机&#xff0c;它有两个直流电机驱动器&#xff0c;俯仰角0和偏航角中 离散时间控制器是为这两个螺旋桨使用根轨迹法设计的 分别使用Matlab对所设计的两个控制器进行仿真&#xff0c;分析…...

为什么28S与18S rRNA比值可用于评估RNA质量?

在分子生物学实验中&#xff0c;获得高质量RNA样本是基因表达分析、转录组测序等研究成功的关键前提。在众多RNA质量评估方法中&#xff0c;28S与18S核糖体RNA的比值长期被广泛用作实验室中的“黄金标准”。这一标准为何如此受重视&#xff1f;其背后有着明确的原理与判断依据。…...

GESP2025年3月认证C++三级( 第一部分选择题(1-8))

&#x1f3af; 第1题&#xff1a;Base64魔法箱&#x1f4dc; 题目核心&#xff1a; &#x1f449; 每 3个字节 → 变成4个字节1、&#x1f9e0; 故事理解有一个魔法机器&#xff1a;&#x1f449; 每放进去 3个苹果 &#x1f34e;&#x1f34e;&#x1f34e;&#xff08;不足3个…...

嵌入式开发中的模块化编程与驱动分离实践

1. 模块化编程与驱动分离的核心价值在嵌入式开发领域&#xff0c;模块化编程早已不是新鲜概念。我第一次真正体会到它的威力是在2016年参与某新能源汽车BMS&#xff08;电池管理系统&#xff09;开发时。当时团队里有8个工程师同时开发不同功能模块&#xff0c;如果没有严格的模…...