使用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_())以上就是构建一个基于人工智能的课堂人脸考勤系统的详细步骤和代码示例。你可以根据实际需求调整模型结构、优化超参数或改进界面设计以进一步提升系统的性能和用户体验。

相关新闻

供电成为GPU瓶颈

供电成为GPU瓶颈

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

2026/8/18 15:49:04 阅读更多 →
免越狱焕新 iPhone:Cowabunga Lite 高自由度 iOS 定制完整指南

免越狱焕新 iPhone:Cowabunga Lite 高自由度 iOS 定制完整指南

免越狱焕新 iPhone:Cowabunga Lite 高自由度 iOS 定制完整指南 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite 厌倦了千篇一律的桌面图标、被系统锁死的状态栏和永远少两个模块的…

2026/8/18 15:48:03 阅读更多 →
VLLM部署Qwen模型

VLLM部署Qwen模型

一、Qwen2.5-14B 1. 环境准备 # 创建并激活虚拟环境(推荐) python -m venv qwen_env source qwen_env/bin/activate# 安装依赖库(确保Python≥3.8) pip install vllm transformers torch2. 下载模型 pip install modelscope model…

2026/8/18 15:48:03 阅读更多 →

最新新闻

老旧Mac如何免费升级最新macOS?OpenCore Legacy Patcher完整上手指南

老旧Mac如何免费升级最新macOS?OpenCore Legacy Patcher完整上手指南

老旧Mac如何免费升级最新macOS?OpenCore Legacy Patcher完整上手指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你的Mac是2014年、2015年…

2026/8/18 16:30:59 阅读更多 →
5分钟快速上手Qwen3.5-9B-w4a16-asym-torchao-v0.17.0:AMD EPYC CPU推理入门教程

5分钟快速上手Qwen3.5-9B-w4a16-asym-torchao-v0.17.0:AMD EPYC CPU推理入门教程

5分钟快速上手Qwen3.5-9B-w4a16-asym-torchao-v0.17.0:AMD EPYC CPU推理入门教程 【免费下载链接】Qwen3.5-9B-w4a16-asym-torchao-v0.17.0 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen3.5-9B-w4a16-asym-torchao-v0.17.0 Qwen3.5-9B-w4a16-asym…

2026/8/18 16:30:59 阅读更多 →
Goo-Engine 安装实录:3 个里程碑、4 个专属节点,把动漫渲染工期从 3 天压到 10 分钟

Goo-Engine 安装实录:3 个里程碑、4 个专属节点,把动漫渲染工期从 3 天压到 10 分钟

Goo-Engine 安装实录:3 个里程碑、4 个专属节点,把动漫渲染工期从 3 天压到 10 分钟 【免费下载链接】goo-engine Custom build of blender with some extra NPR features. 项目地址: https://gitcode.com/gh_mirrors/go/goo-engine Goo-Engine 是…

2026/8/18 16:30:59 阅读更多 →
PullToMakeSoup:Yalantis 出品的 iOS 动画下拉刷新组件完整介绍

PullToMakeSoup:Yalantis 出品的 iOS 动画下拉刷新组件完整介绍

PullToMakeSoup:Yalantis 出品的 iOS 动画下拉刷新组件完整介绍 【免费下载链接】PullToMakeSoup Custom animated pull-to-refresh that can be easily added to UIScrollView 项目地址: https://gitcode.com/gh_mirrors/pu/PullToMakeSoup 如果你正在寻找一…

2026/8/18 16:30:59 阅读更多 →
Sorting-Algorithms-Blender 项目结构全解析:sort_circle、sort_color、sort_scale、sort_combined 四大文件夹一文读懂

Sorting-Algorithms-Blender 项目结构全解析:sort_circle、sort_color、sort_scale、sort_combined 四大文件夹一文读懂

Sorting-Algorithms-Blender 项目结构全解析:sort_circle、sort_color、sort_scale、sort_combined 四大文件夹一文读懂 【免费下载链接】Sorting-Algorithms-Blender Sorting algorithms visualized using the Blender Python API. 项目地址: https://gitcode.co…

2026/8/18 16:30:58 阅读更多 →
深度解析SingGuard-NSFA-4B:一文读懂覆盖185种攻击风险的NSFA分类体系

深度解析SingGuard-NSFA-4B:一文读懂覆盖185种攻击风险的NSFA分类体系

深度解析SingGuard-NSFA-4B:一文读懂覆盖185种攻击风险的NSFA分类体系 【免费下载链接】SingGuard-NSFA-4B 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/SingGuard-NSFA-4B 随着AI Agent(智能体)开始自主调用工具、读写…

2026/8/18 16:29:58 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

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

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

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →