博主介紹:?程序員徐師兄、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 攝像頭
環境搭建
- 安裝 Python(Windows / Mac / Linux 均可)
- 安裝依賴庫
pip install django opencv-python dlib mysqlclient
- 創建 Django 項目
django-admin startproject attendance_system
cd attendance_system
python manage.py startapp face_attendance
- 配置 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套》
感興趣的可以先收藏起來,還有大家在畢設選題,項目以及文檔編寫等相關問題都可以給我留言咨詢,希望幫助更多的人