对网站开发流程的了解,友链网,微商水印相机做网站,建设部网站公示公告安全大家好#xff0c;本文是对基于驾驶员面部特征的疲劳检测系统源码的介绍与说明。
项目下载#xff1a;基于驾驶员面部特征的疲劳检测系统
1.关于项目
疲劳驾驶检测系统通过监测驾驶人的眼睛状态#xff0c;头部状态#xff0c;嘴部状态等指标#xff0c;识别出疲劳迹象…大家好本文是对基于驾驶员面部特征的疲劳检测系统源码的介绍与说明。
项目下载基于驾驶员面部特征的疲劳检测系统
1.关于项目
疲劳驾驶检测系统通过监测驾驶人的眼睛状态头部状态嘴部状态等指标识别出疲劳迹象及时发出警示提醒。这种预警提醒可以帮助驾驶人意识到自己的疲劳状态及时采取休息措施防止发生事故。项目基于OpenCV和dlib库实现对摄像头或视频中的人脸进行实时特征检测使用PyQt5实现简单的界面设计通过提取的人脸特征数据进行疲劳检测判断是否处于疲劳状态并在必要时发出提示信息。
1.1 项目简介
项目实现了一个疲劳驾驶检测系统带UI界面 1.2 项目结构介绍
example_videos文件夹保存供检测使用的视频README_images文件夹保存此READNE.md用到的图片src文件夹包含运行文件main.py界面类文件UI.py工具类文件utils.py预训练人脸关键点检测模型文件shape_predictor_68_face_landmarks.dat以及警报声音文件warning.mp3。
1.3 运行方法介绍
配置环境dlib库的安装也可以参照参照网上的教程
若未安装cmake
conda install -c anaconda cmake
安装dlib
conda install -c conda-forge dlib
以下是本项目在python3.9环境下使用到的主要库的版本 进入src文件夹运行main.py文件然后按照界面提示打开摄像头或传入视频进行检测 2.实验步骤
2.1 MainWindow类的实现
在main.py中创建MainWindow类继承自Ui_MainWindow类主要的作用是 初始化窗口创建两个线程的实例 连接各种信号和槽函数 实现各个槽函数的功能
2.2 AjustCamera_Thread类的实现
在main.py中创建AjustCamera_Thread类其主要的作用是 定义信号对象用于发送图像消息数据。初始化各种属性以及加载模型的方法 当用户点击调整摄像头按钮打开摄像头加载面部特征检测模型。如果人脸在摄像头可检测的范围内会绘制人脸的12条轴线并显示头部姿态的三个旋转角度。
2.3 Start_Thread类的实现
在main.py中创建Start_Thread线程类其主要的作用是初始化各种变量文件路径摄像头选择等实现一些功能方法检测功能开关打开视频文件开关播放音乐的方法等
程序的核心功能是疲劳驾驶检测功能的实现具体功能如下
① 将线程状态设置为运行并向窗口发送消息打开视频或摄像头
② 初始化测试参数初始化阈值。
③ 读取视频帧对当前帧进行调整维度缩减灰度化图像增强
④ 使用面部检测模型detector检测人脸位置在这里实现了脱岗检测功能
⑤ 使用predictor获取脸部特征信息转为数组形式
⑥ 提取左眼右眼嘴巴坐标计算左右眼长宽比取二者均值ear嘴巴长宽比mar。获取头部姿态取pitch(har),yaw,row旋转角度。并实时在屏幕中显示计算结果。
⑦ 计算100次ear,mar,har并求平均值得到当前使用者的眼部嘴部和头部俯仰角的阈值。
⑧ 计算检测时间内异常状态的次数。异常状态定义1.ear眼睛长宽比 小于0.75倍阈值标记为异常2.mar嘴巴长宽比 大于1.6倍阈值标记为异常3.har头部旋转角度 跟阈值差大于标准值标记为异常。
⑨ 如果这三个异常状态的次数值与检测时间的比值大于设定的疲劳阈值FATIGUE_THRESH则判定为1.闭眼时间较长2.张嘴时间较长3.低头时间较长。并在屏幕中发送提示信息。
⑩ 如果被判定为疲劳的次数大于3次则判定为您已经疲劳请注意休息。并播放警告音频。
3.实验的不足与拓展
3.1 实验不足
导入视频或者打开摄像头时间不能太短因为模型需要循环100次计算眼部长宽比嘴部长宽比头部俯仰角并求平均作为阈值用于后面的疲劳判断模型在遮挡或非正脸方面表现不好。
3.2 实验拓展
可以使用yolo添加分心行为检测功能如玩手机、聊天等。