首页 > Python资料 博客日记
基于人脸识别的校园课堂考勤管理系统设计与实现(Python)
2025-01-16 01:30:06Python资料围观5次
目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1课题背景及意义 1
1.1.1 选题背景 1
1.1.2 选题意义 1
1.2 国内外研究现状及发展趋势 2
1.2.1 国内研究现状 2
1.2.2 国外研究现状 2
1.2.3 发展趋势 3
1.3 本文研究的主要内容 3
第2章 系统开发环境 5
2.1 python简介 5
2.1.1 Python的特点 5
2.1.2 Python的应用领域 5
2.1.3 Python在本项目中的应用 6
2.2 人脸识别简介 6
2.3 SQLite简介 6
2.4 Django简介 7
2.5 TensorFlow简介 8
第3章 系统分析 10
3.1 可行性分析 10
3.1.1 技术可行性 10
3.1.2 操作可行性 10
3.1.3 经济可行性 11
3.1.4 法律可行性 12
3.2需求分析 12
3.2.1 功能需求分析 13
3.2.2 性能需求分析 13
3.3开发环境分析 14
3.4界面需求 14
第4章 系统设计 16
4.1系统设计原则 16
4.2系统流程设计 16
4.2.1系统开发流程 16
4.2.2 添加信息流程 18
4.2.3 人脸识别流程 18
4.3 系统功能设计 19
4.4 数据库设计 22
4.4.1 数据库设计原则 22
4.4.2 数据库实体 22
4.4.3 数据库表设计 23
第5章 系统实现 25
5.1 登录 25
5.2 注册 26
5.3 识别签到 28
第6章 系统测试 33
6.1测试环境与条件 33
6.2功能测试 33
6.3可用性测试 34
6.4测试结果分析 35
结 论 36
致 谢 37
参考文献 38
1.3 本文研究的主要内容
本文的主要研究内容是设计和实现一个基于人脸识别的校园课堂考勤管理系统。该系统旨在利用先进的人脸识别技术,结合现代软件开发框架和数据库技术,为高校提供一套高效、准确、便捷的考勤管理解决方案。
具体研究内容如下:
需求分析:分析校园课堂考勤管理的实际需求,明确系统的功能和特点,为后续的设计和实现提供指导。
人脸识别技术研究:研究并选择合适的人脸识别算法,包括人脸检测、特征提取和识别等关键技术,确保系统的准确性和稳定性。
系统架构设计:设计系统的整体架构,包括前后端分离的设计、数据库的选择和设计、接口设计等,确保系统的可扩展性和可维护性。
系统实现:根据系统架构设计,实现系统的各个功能模块,包括用户管理、考勤管理、数据分析等,确保系统的功能完整和性能稳定。
系统测试与优化:对系统进行全面的测试,包括功能测试、性能测试、安全测试等,发现并修复潜在的问题,优化系统的性能和用户体验。
隐私保护与数据安全:在系统设计和实现过程中,充分考虑隐私保护和数据安全的问题,采取合适的措施保护用户的个人信息不被滥用和泄露。
通过本文的研究,期望能够开发出一套具有实际应用价值的基于人脸识别的校园课堂考勤管理系统,为高校的教学管理提供有力的技术支持。同时,也期望通过本文的研究,为人脸识别技术在其他领域的应用提供有益的参考和借鉴。
import cv2
import numpy as np
from .models import User
import sys
from numpy import expand_dims
import tensorflow as tf
import threading
from tensorflow.python.keras.backend import set_session
from keras.models import load_model
from keras.backend import clear_session
global mtcnn_model, face_model
# 程序开始时声明
sess = tf.compat.v1.Session()
graph = tf.compat.v1.get_default_graph()
from PIL import Image
import dlib
face_detector = dlib.get_frontal_face_detector() # 获取人脸分类器
model_path = 'facenet_keras.h5'
"""主要 人脸识别代码"""
set_session(sess)
face_model = load_model(model_path) ## 载入人脸特征提取神经网络
def get_face_encoding(imgs):
""" 编码头像信息 可以是传 BytesIO对象 也可传多个图片BytesIO数组
"""
def getencoding(img, ):
required_size = (160, 160)
pixels = np.array(img) # 转换图片为数组矩阵
results = face_detector(pixels, 1) ## 使用dlib找出人脸
if len(results) <= 0:
return
face_encodings = []
for index, face in enumerate(results):
x1 = face.left()
y1 = face.top()
x2 = face.right()
y2 = face.bottom()
face = pixels[y1:y2, x1:x2] ## 切出人脸
print(face.shape)
if all(face.shape):
face = cv2.resize(face, required_size).astype('float32') # 转换人脸图片大小为160*160
mean, std = face.mean(), face.std()
face_pixels = (face - mean) / std # 归一化
samples = expand_dims(face_pixels, axis=0) ## 增加一个图片数量维度
global graph
global sess
with graph.as_default():
set_session(sess)
face_encoding = face_model.predict(samples)[0] ##人脸特征提取的神经网络提取人脸特征
face_encodings.append(face_encoding)
return face_encodings
encodings = []
if isinstance(imgs, list):
for x in imgs:
img = Image.open(x).convert("RGB") # 打开图片
encoding = getencoding(img)
if encoding:
encodings = encodings + encoding
else:
img = Image.open(imgs).convert("RGB")
encoding = getencoding(img)
if encoding:
encodings = encodings + encoding
return encodings
def base_match_faces(face_encoding, known_face_encodings, known_face_names):
""" 传入人脸特征 将输出最匹配的人脸名称 如果没有最匹配的将返回None 使用欧式距离计算 """
face_distances = np.linalg.norm(known_face_encodings - face_encoding, axis=1)
best_match_index = np.argmin(face_distances)
print(face_distances, face_distances[best_match_index])
if face_distances[best_match_index] < 6:
name = known_face_names[best_match_index]
return name
def load_all_users():
users = User.objects.all()
known_face_names = []
known_face_encodings = []
for x in users:
if len(x.feature1) > 5:
face_encoding = np.array(eval(x.feature1))
known_face_encodings.append(face_encoding)
known_face_names.append(x.username)
face_encoding = np.array(eval(x.feature2))
known_face_encodings.append(face_encoding)
known_face_names.append(x.username)
face_encoding = np.array(eval(x.feature3))
known_face_encodings.append(face_encoding)
known_face_names.append(x.username)
return known_face_names, known_face_encodings
# np.save("known_face_names.npy", np.array(known_face_names))
# np.save("known_face_encodings.npy", np.array(known_face_names))
# return list(np.load("known_face_names.npy")), list(np.load("known_face_encodings.npy"))
if "runserver" in sys.argv:
known_face_names, known_face_encodings = load_all_users()
print("载入已知人脸", known_face_names)
标签:
上一篇:Python的13款Web框架对比(比较全!建议收藏!)
下一篇:没有了
相关文章
最新发布
- 基于人脸识别的校园课堂考勤管理系统设计与实现(Python)
- Python的13款Web框架对比(比较全!建议收藏!)
- 【python】Matplotlib库安装教程
- Python 青铜宝剑十六维,破医疗数智化难关(上)
- 【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
- Python 条件语句详解 if - elif-else
- C语言&Python&Bash:空白(空格、水平制表符、换行符)与转义字符
- 计算机毕业设计Python中华古诗词知识图谱可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析模型 自然语言处理NLP 机器学习 深度学习
- Python | 基于支持向量机(SVM)的图像分类案例
- 如何在Python中安装GDAL库(gdal)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程