最近 在设计基于人脸识别的门禁系统时,看到几篇比较优秀的论文,描述了人脸识别算法的研究过程:https://max.book118.com/html/2020/0522/5343322004002300.shtmhttps://www.docin.com/p-1545154552.htmlhttps://www.fx361.com/page/2019/0522/5144153.shtmlhttps://max.book118.com/html/2018/0706/7144120115001136.s
Python基于
人脸识别
的
门禁
管理系统源码,基于
人脸识别
的
门禁
管理系统
该项目为宿舍
门禁系统
管理,并额外加入宿舍管理、水电费管理、在线充值、报修管理、系统日志等多项功能等。
Django为后端、H5/CSS/JS为前端、MySQL为后端数据库、Redis为缓存、Dlib为
人脸识别
程序库。该项目为个人学校毕业
设计
。Python基于
人脸识别
的
门禁
管理系统源码,基于
人脸识别
的
门禁
管理系统
该项目为宿舍
门禁系统
管理,并额外加入宿舍管理、水电费管理、在线充值、报修管理、系统日志等多项功能等。
Django为后端、H5/CSS/JS为前端、MySQL为后端数据库、Redis为缓存、Dlib为
人脸识别
程序库。该项目为个人学校毕业
设计
。
Python基于
人脸识别
的
门禁
管理系统源码,基于
人脸识别
的
门禁
管理系统
该项目为宿舍
门禁系统
管理,并额外加入宿舍管理、水电费管理、在线充值、报修管理、系统日志等多项功能等。
Django为后端、H5/CSS/JS为前端、MySQL为后端数据库、Redis为缓存、Dlib为
人脸识别
程序库。该项目为个人学校毕业
设计
。
Python基于
人脸识别
的
门禁
管理系统源码,基于人脸
毕业
设计
_基于K210的
人脸识别
门禁系统
介绍硬件准备软件准备部分代码tips写在最后
分享一则自己的毕业
设计
,基于
人脸识别
技术的
门禁系统
研究。系统硬件比较糙,可以集成化更高一点,基本控制是交由STM32
处
理,图像识别由K210
处
理。水平有限,恳请大家指正。
本系统
设计
以Kendryte K210为人脸图像识别的核心芯片,以STM32为系统逻辑控制芯片,同时加入语音模块、触摸屏和RFID模块。系统共四个功能模式,分别是
人脸识别
、口罩检测、特征学习、
门禁
通卡。
人脸识别
采用基于YOLO的人脸检测
算法
和特
题目:基于51单片机指纹识别管理
门禁
密码锁系统
设计
(毕业
设计
)
设计
框架
本系统由STC89C52单片机电路+指纹模块传感器电路+LCD1602液晶显示电路+继电器电路+按键电路+电源电路组成。
1、通过指纹传感器检测采集指纹。
2、通过按键可以增加指纹、删除指纹,具有掉电不丢失指纹数据功能。
3、如果指纹和录入的指纹库的指纹一致,则继电器1闭合,否则继电器1不动作(继电器1默认断开)。
4、继电器闭合后,可以通过按键进行断开
处
理。
资料包含:
参考
论文
程序流程图
使用到的芯片资料
疑难问题说明
软件安装包
CREATE TABLE `employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`photo` varchar(255) NOT NULL,
`permission` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
4. 代码
实现
:我们需要
实现
以下功能:
- 采集人脸信息:使用摄像头采集人脸信息,存储到数据库中。
-
人脸识别
:使用OpenCV和Dlib进行人脸检测和
人脸识别
,判断是否为已知人员。
- 权限控制:根据人员权限和当前时间,判断是否可以进入。
- 记录日志:记录每个人员的
进出
时间和
门禁
状态。
以下是Python代码
实现
:
```python
import cv2
import dlib
import numpy as np
import pymysql
import time
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='face_recognition')
cursor = conn.cursor()
# 加载人脸检测器和识别器
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
facerec = dlib.face_recognition_model_v1('dlib_face_recognition_resnet_model_v1.dat')
# 读取数据库中的人脸信息
cursor.execute('SELECT * FROM employee')
rows = cursor.fetchall()
known_face_encodings = []
known_face_names = []
for row in rows:
name = row[1]
photo_path = row[2]
permission = row[3]
# 读取人脸照片,并进行编码
img = cv2.imread(photo_path)
face_locations = detector(img, 1)
face_encodings = facerec.compute_face_descriptor(img, face_locations[0])
known_face_encodings.append(face_encodings)
known_face_names.append(name)
# 打开摄像头
cap = cv2.VideoCapture(0)
# 循环
处
理每一帧图像
while True:
ret, img = cap.read()
if ret == False:
break
# 人脸检测
face_locations = detector(img, 1)
if len(face_locations) > 0:
#
人脸识别
face_encodings = facerec.compute_face_descriptor(img, face_locations[0])
face_distances = np.linalg.norm(known_face_encodings - face_encodings, axis=1)
min_index = np.argmin(face_distances)
if face_distances[min_index] < 0.6:
name = known_face_names[min_index]
permission = rows[min_index][3]
# 权限控制
if permission == 0:
access = False
else:
current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
if permission == 1 or permission == 2:
access = True
else:
cursor.execute('SELECT * FROM access_log WHERE name=%s AND access_time>%s', [name, current_time])
rows = cursor.fetchall()
if len(rows) > 0:
access = False
else:
access = True
# 记录日志
cursor.execute('INSERT INTO access_log(name, access_time, access) VALUES(%s, %s, %s)', [name, current_time, access])
conn.commit()
# 显示人员姓名和
门禁
状态
cv2.putText(img, name, (face_locations[0].left, face_locations[0].top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
if access:
cv2.putText(img, 'Access Allowed', (face_locations[0].left, face_locations[0].bottom + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 2)
else:
cv2.putText(img, 'Access Denied', (face_locations[0].left, face_locations[0].bottom + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
# 显示图像
cv2.imshow('Face Recognition', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 关闭摄像头和数据库连接
cap.release()
cv2.destroyAllWindows()
cursor.close()
conn.close()
以上是一个基于
人脸识别
的
门禁系统
的
设计
与
实现
,具体
实现
可以根据实际需求进行调整。