发布时间:2026/8/18 15:49:11
使用OpenCV和Dlib进行人脸特征提取 基于人工智能的课堂人脸考勤系统 人脸考勤系统 使用深度学习模型进行活体检测和专注度检测 使用Qt Designer设计界面 使用OpenCV和Dlib进行人脸特征提取 基于人工智能的课堂人脸考勤系统 使用深度学习模型进行活体检测和专注度检测 使用Qt Designer设计界面基于人工智能的课堂人脸考勤系统文章目录使用OpenCV和Dlib进行人脸特征提取 基于人工智能的课堂人脸考勤系统 使用深度学习模型进行活体检测和专注度检测 使用Qt Designer设计界面1. 环境搭建安装依赖2. 人脸库录入录入人脸库代码3. 人脸识别人脸识别代码4. 活体检测和专注度检测活体检测代码专注度检测代码5. UI设计与结果展示设计界面主程序代码系统主要分为三个部分第一个部分人脸库的录入通过录入人脸裤记录学生信息。第二部分人脸识别选择班级考勤时间后打开摄像头进行人脸考勤。第三部分活体检测和专注度检测判断学生是否在听课以及听课的专注度。1基于人工智能的课堂人脸考勤系统人脸库录入、人脸识别、活体检测和专注度检测。关键代码示例1. 环境搭建确保你的开发环境已经安装了必要的库和工具。安装依赖# 创建并激活虚拟环境conda create-nface_attendancepython3.8conda activate face_attendance# 安装相关库pipinstallopencv-python numpy dlib imutils PyQt5 tensorflow keras scikit-learn2. 人脸库录入使用OpenCV和Dlib进行人脸特征提取并将特征存储在数据库中。录入人脸库代码importcv2importosimportnumpyasnpimportdlibfromimutilsimportface_utilsimportsqlite3# 初始化Dlib的人脸检测器和特征提取器detectordlib.get_frontal_face_detector()predictordlib.shape_predictor(shape_predictor_68_face_landmarks.dat)face_recogdlib.face_recognition_model_v1(dlib_face_recognition_resnet_model_v1.dat)defadd_face_to_db(name,image_path):connsqlite3.connect(faces.db)cconn.cursor()# 创建表如果不存在c.execute(CREATE TABLE IF NOT EXISTS faces (name TEXT, encoding BLOB))# 加载图像并转换为灰度图imagecv2.imread(image_path)graycv2.cvtColor(image,cv2.COLOR_BGR2GRAY)# 检测人脸rectsdetector(gray,0)iflen(rects)0:print(No face detected in the image.)returnforrectinrects:shapepredictor(gray,rect)face_descriptorface_recog.compute_face_descriptor(image,shape)# 将特征向量转换为二进制格式并存储到数据库中face_descriptor_binnp.array(face_descriptor).tobytes()c.execute(INSERT INTO faces (name, encoding) VALUES (?, ?),(name,face_descriptor_bin))conn.commit()conn.close()# 示例添加一张人脸到数据库add_face_to_db(Student1,path/to/student1.jpg)3. 人脸识别使用摄像头实时捕捉图像并与数据库中的人脸特征进行比对。人脸识别代码importcv2importnumpyasnpimportdlibimportsqlite3fromimutilsimportface_utils# 初始化Dlib的人脸检测器和特征提取器detectordlib.get_frontal_face_detector()predictordlib.shape_predictor(shape_predictor_68_face_landmarks.dat)face_recogdlib.face_recognition_model_v1(dlib_face_recognition_resnet_model_v1.dat)defload_faces_from_db():connsqlite3.connect(faces.db)cconn.cursor()c.execute(SELECT name, encoding FROM faces)rowsc.fetchall()known_names[]known_encodings[]forrowinrows:namerow[0]encodingnp.frombuffer(row[1],dtypenp.float64)known_names.append(name)known_encodings.append(encoding)conn.close()returnknown_names,known_encodingsdefrecognize_faces(frame,known_names,known_encodings):graycv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)rectsdetector(gray,0)forrectinrects:shapepredictor(gray,rect)face_descriptorface_recog.compute_face_descriptor(frame,shape)matchesdlib.compare_face_descriptors(known_encodings,face_descriptor,tolerance0.6)ifTrueinmatches:match_indexmatches.index(True)nameknown_names[match_index]print(fRecognized:{name})returnnamereturnNone# 实时人脸识别defreal_time_face_recognition():known_names,known_encodingsload_faces_from_db()capcv2.VideoCapture(0)whileTrue:ret,framecap.read()ifnotret:breakrecognized_namerecognize_faces(frame,known_names,known_encodings)ifrecognized_name:cv2.putText(frame,recognized_name,(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)cv2.imshow(Face Recognition,frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()# 运行实时人脸识别real_time_face_recognition()4. 活体检测和专注度检测使用深度学习模型进行活体检测和专注度检测。活体检测代码importcv2importnumpyasnpfromkeras.modelsimportload_model# 加载预训练的活体检测模型modelload_model(liveness.model)defis_living_face(frame):face_cascadecv2.CascadeClassifier(haarcascade_frontalface_default.xml)graycv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)facesface_cascade.detectMultiScale(gray,scaleFactor1.1,minNeighbors5,minSize(30,30))iflen(faces)0:(x,y,w,h)faces[0]face_roiframe[y:yh,x:xw]face_roicv2.resize(face_roi,(128,128))face_roiface_roi.astype(float)/255.0face_roinp.expand_dims(face_roi,axis0)predmodel.predict(face_roi)[0]ifpred[1]pred[0]:returnTruereturnFalse# 示例检查当前帧是否为活体人脸capcv2.VideoCapture(0)whileTrue:ret,framecap.read()ifnotret:breakifis_living_face(frame):print(Living face detected!)else:print(Not a living face.)cv2.imshow(Liveness Detection,frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()专注度检测代码importcv2importnumpyasnpfromkeras.modelsimportload_model# 加载预训练的专注度检测模型modelload_model(attention.model)defget_attention_level(frame):face_cascadecv2.CascadeClassifier(haarcascade_frontalface_default.xml)graycv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)facesface_cascade.detectMultiScale(gray,scaleFactor1.1,minNeighbors5,minSize(30,30))iflen(faces)0:(x,y,w,h)faces[0]face_roiframe[y:yh,x:xw]face_roicv2.resize(face_roi,(128,128))face_roiface_roi.astype(float)/255.0face_roinp.expand_dims(face_roi,axis0)predmodel.predict(face_roi)[0]attention_levelnp.argmax(pred)returnattention_levelreturnNone# 示例获取当前帧的专注度水平capcv2.VideoCapture(0)whileTrue:ret,framecap.read()ifnotret:breakattention_levelget_attention_level(frame)ifattention_levelisnotNone:print(fAttention Level:{attention_level})cv2.imshow(Attention Detection,frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()5. UI设计与结果展示使用PyQt5设计用户界面并展示检测和跟踪结果。设计界面使用Qt Designer设计界面并导出为.ui文件然后使用pyuic5转换为Python代码。pyuic5-xyour_design.ui-oui_design.py主程序代码importsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QFileDialogfromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQTimerimportcv2fromui_designimportUi_MainWindowclassFaceAttendanceApp(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)self.timerQTimer()self.timer.timeout.connect(self.update_frame)self.capNoneself.known_names,self.known_encodingsload_faces_from_db()defstart_camera(self):self.capcv2.VideoCapture(0)self.timer.start(30)defupdate_frame(self):ret,frameself.cap.read()ifret:recognized_namerecognize_faces(frame,self.known_names,self.known_encodings)ifrecognized_name:cv2.putText(frame,recognized_name,(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)height,width,channelframe.shape bytes_per_line3*width q_imgQImage(frame.data,width,height,bytes_per_line,QImage.Format_RGB888)self.imageLabel.setPixmap(QPixmap.fromImage(q_img))defstop_camera(self):ifself.cap:self.cap.release()self.timer.stop()defcloseEvent(self,event):self.stop_camera()event.accept()if__name____main__:appQApplication(sys.argv)windowFaceAttendanceApp()window.show()sys.exit(app.exec_())以上就是构建一个基于人工智能的课堂人脸考勤系统的详细步骤和代码示例。你可以根据实际需求调整模型结构、优化超参数或改进界面设计以进一步提升系统的性能和用户体验。

相关新闻

2026/8/18 15:49:11

供电成为GPU瓶颈

链接:https://zhuanlan.zhihu.com/p/2051745045397628852?share_codeAeVInxZdfz3M&utm_psn2072835689901715563

2026/8/18 15:44:10

AI自动瞄准项目从零到跑通:用YOLOv5让准星自己锁人

AI自动瞄准项目从零到跑通:用YOLOv5让准星自己锁人 【免费下载链接】AI-Aimbot Worlds Best AI Aimbot - CS2, Valorant, Fortnite, APEX, every game 项目地址: https://gitcode.com/gh_mirrors/ai/AI-Aimbot 你有没有过这样的时刻:残局 1v2&…

2026/8/18 18:24:40

osu-droid Mod系统全解析:30+模组效果一览与新手推荐组合

osu-droid Mod系统全解析:30模组效果一览与新手推荐组合 【免费下载链接】osu-droid 项目地址: https://gitcode.com/gh_mirrors/os/osu-droid 如果你是刚接触 osu-droid 的节奏游戏玩家,一定会被选歌界面那一排花花绿绿的模组图标弄晕。osu-dro…

2026/8/18 18:24:40

HTML5 Word Cloud 的国际化实现:web-l10n 多语言支持全解析

HTML5 Word Cloud 的国际化实现:web-l10n 多语言支持全解析 【免费下载链接】wordcloud HTML5 Word Cloud 项目地址: https://gitcode.com/gh_mirrors/word/wordcloud HTML5 Word Cloud 是一款在浏览器端运行的文字云(词云)生成工具&a…

2026/8/18 18:24:40

焊接面罩弧光检测数据集VOC+YOLO格式494张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):494标注数量(xml文件个数):494标注数量(txt文件个数):494标注类别数&…

2026/8/18 18:19:39

从零玩转 DOSBox-X:老游戏与 Win98 兼容性配置实战手册

从零玩转 DOSBox-X:老游戏与 Win98 兼容性配置实战手册 【免费下载链接】dosbox-x DOSBox-X fork of the DOSBox project 项目地址: https://gitcode.com/gh_mirrors/do/dosbox-x 你有没有经历过这样的时刻:从老硬盘里翻出当年通宵攻关的 DOS 游戏…

2026/8/17 10:49:52

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 6:58:27

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/18 0:02:05

Qwen3.8-27B本地部署实战:17GB内存运行270亿参数大模型

1. 这篇文章真正要解决的问题 你是否曾对动辄需要上百GB显存才能运行的百亿参数大模型望而却步?是否觉得在个人电脑上部署一个功能强大的语言模型是天方夜谭?最近,通义千问团队发布的 Qwen3.8-27B 模型,宣称仅需 17GB 内存即可在本…

2026/8/18 0:02:05

ME3169 36V,8A,180KHz 恒压Buck DC-DC 转换器

概述ME3169 是一款180KHz,PWM 模式恒压Buck DC-DC 转换器,8V 到36V 宽工作电压范围,低纹波,内置低导通电阻功率MOS。ME3169 内置环路补偿电路,可以减少外围元器件数量。内部设计有恒压环路,可以通过外部电阻…

2026/8/18 18:23:10

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/17 17:27:06

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/18 7:12:40

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…