当前位置:网站首页>基于人脸识别实现课堂抬头率检测
基于人脸识别实现课堂抬头率检测
2022-07-07 22:53:00 【biyezuopinvip】
资源下载地址:https://download.csdn.net/download/sheziqiong/85948238
资源下载地址:https://download.csdn.net/download/sheziqiong/85948238
抬头率检测系统
本仓库设计并实现了一个简易的抬头率检测系统,通过调用摄像头来获取教室的实时图像,对图像进行人脸识别,并结合数据库中的选课人数计算该堂课的实时抬头率。此外,我们还设计了一个 UI 操作界面,以便管理人员浏览和管理。
本仓库包含以下内容:
- 系统运行所需要的全部源码(共有 ipython 和 py 两种文件格式,均可独立完整运行)
- 人脸识别所需要的训练好的
- 运行测试所需要的图片和数据
内容简介
代码功能介绍
本文档中仅介绍.ipython 文件,对应的.py 文件不再赘述,内容都是一样的。
camera.ipynb
此代码实现了调用摄像头以截取某一时刻的图像,并将其储存在本地的功能。
code0_initial.ipynb
这个代码就是最原始的主体代码,人脸识别部分主要参考了 dlib 的一个样例程序,代码里还保留着一些原始的英文注释,讲解了一下环境配置中可能出现的问题,有兴趣的可以看一看。
code1_window_and_face_recognition.py.ipynb
此代码是第一个较为完整地代码,已经可以完整地运行出来,并带了 UI 界面。
code2_password_final.ipynb
正如这个代码的文件名,它就是在上一个版本的代码中加入了登录界面,并完善了代码的各项功能,是本系统最终使用的代码。嫌麻烦的完全可以不看前两个版本的代码,直接看这个最终版就行。
代码主要由三大部分组成:界面代码、人脸检测代码以及数据调用代码。
界面代码是用的 tkinter 库,人脸检测代码也是直接调用的 opencv 的一个人脸检测的接口,调用训练好的模型之后直接对图片 infer 就行了。数据调用代码主要调用两种数据,分别是课堂信息和教室的实时图片。前者被用来进行抬头率检测,后者用来将教室的实时图像显示在 UI 界面上,以便观察和对照。
关键代码讲解
其实整个代码也比较简单,没啥好讲的,基本是界面的代码,我就讲一下最核心的功能,人脸检测函数吧。
def inspect(): ## 声明一个函数
nonlocal face ## 将face变量定义为全局,这样就不用再把face给return了,函数里跑出的face值,函数外也能获得,可以保证face值得实时性
str1 = "教室"
str2 = "课上的抬头率为:"
path = r'.\faces' ## 图片保存的路径
pic_path = str(class_room_chosen.get()) + str(course_time_chosen.get()) + '.jpg' ## 根据选择的教室和时间获取相应图片的名称 (图片的名称是需要按一定的规则来命名的,否则会报错)
p = path + '/' + pic_path ## 将图片的总路径和单个图片的名称拼接起来,得到单个图片的路径
img = cv2.imread(p) ## 读取图片
color = (0, 255, 0)
grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ## 只选取单个通道的图片数据进行处理,就是把彩图变成灰度图
classfier = cv2.CascadeClassifier(
r".\haarcascade_frontalface_alt2.xml") ## 创建一个分类器,这个分类器是已经训练好的,调用了一个已经训练好的模型文件
faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32)) ## 通过分类器对图像进行人脸识别
a = len(faceRects) ## faceRects有几条数据,就说明有几个人脸,从而判断出有几个人抬头了
face = a
str3 = str(a) ## 改变数据格式,以便后面将其输出在UI界面上
运行说明和结果展示
运行说明
编码语言:python3.7
编程环境: Jupyter notebook
主要依赖库: Opencv
结果展示
首先是登录界面:

因为时间原因,本系统并未真正实现密码验证功能,有兴趣的小伙伴可以结合 MySQL 数据库等等来实现这一功能。
其次是系统的初始化界面,也就是登录之后会跳转到的界面:

最后就是抬头率的结果展示画面,在选取了相应的教室和时间后,依次点击界面上的两个按钮,就可以显示出抬头率,并在侧面显示出教室的实时图像:

资源下载地址:https://download.csdn.net/download/sheziqiong/85948238
资源下载地址:https://download.csdn.net/download/sheziqiong/85948238
边栏推荐
- Single machine high concurrency model design
- Lecture 1: the entry node of the link in the linked list
- 赞!idea 如何单窗口打开多个项目?
- ReentrantLock 公平锁源码 第0篇
- 搭建ADG过程中复制报错 RMAN-03009 ORA-03113
- Emotional post station 010: things that contemporary college students should understand
- 接口测试要测试什么?
- 德总理称乌不会获得“北约式”安全保障
- 某马旅游网站开发(登录注册退出功能的实现)
- The difference between -s and -d when downloading packages using NPM
猜你喜欢

The underlying principles and templates of new and delete

测试流程不完善,又遇到不积极的开发怎么办?

Lecture 1: the entry node of the link in the linked list

接口测试进阶接口脚本使用—apipost(预/后执行脚本)

new和delete的底层原理以及模板

应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设

Langchao Yunxi distributed database tracing (II) -- source code analysis

Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布

【obs】官方是配置USE_GPU_PRIORITY 效果为TRUE的

备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log
随机推荐
《因果性Causality》教程,哥本哈根大学Jonas Peters讲授
"An excellent programmer is worth five ordinary programmers", and the gap lies in these seven key points
Deep dive kotlin collaboration (the end of 23): sharedflow and stateflow
接口测试要测试什么?
Huawei switch s5735s-l24t4s-qa2 cannot be remotely accessed by telnet
手写一个模拟的ReentrantLock
Basic principle and usage of dynamic library, -fpic option context
51 communicates with the Bluetooth module, and 51 drives the Bluetooth app to light up
fabulous! How does idea open multiple projects in a single window?
They gathered at the 2022 ecug con just for "China's technological power"
[Yugong series] go teaching course 006 in July 2022 - automatic derivation of types and input and output
“一个优秀程序员可抵五个普通程序员”,差距就在这7个关键点
C language 005: common examples
备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log
Hotel
RPA云电脑,让RPA开箱即用算力无限?
Cause analysis and solution of too laggy page of [test interview questions]
Reading notes 004: Wang Yangming's quotations
从Starfish OS持续对SFO的通缩消耗,长远看SFO的价值
1293_ Implementation analysis of xtask resumeall() interface in FreeRTOS