脚本宝典收集整理的这篇文章主要介绍了26.疲劳检测,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
目录
1 项目介绍
2 代码实现
2.1 导入库
2.2 定义68个关键点
2.3 定义eye_asPEct_ratio()
2.4 定义参数
2.5 定义阈值
2.6 定义次数
2.7 创建检测器
2.8 获取左眼与右眼的起始点与终止点
2.9 读取视频
2.10 定义Shape_to_np()
2.11 遍历每一帧
2.11.1 提取每一帧图像
2.11.2 图像预处理
2.11.3 检测人脸
2.11.4 遍历每一张检测的人脸
2.11.5 在图像上写字
2.11.6 展示图像
这个是我们上一章人脸检测的进阶版,还是使用之前的68个关键点,在这个项目中,我们通过计算双眼的举例来判断眨眼的次数,最终确认司机是否为疲劳状态
我们现在有这样一个开车的视频
我们在左上角将闭眼的次数Blinks和眼之间的横纵距离eye_ratio计算出来并写在视频的左上角
scipy是做运算用的库,我们这里用它计算双眼之间的距离
这个函数是计算眼部高宽比例的
这个函数会传入眼部的七个关键点,我们先看一下这七个关键点
dist.euclidean()是计算两点之间欧式距离的,我们一共有三个距离
计算完A,B,C三个距离后,我们加AB距离加和之后除2(算出平均高度),然后再除宽度,计算眼镜的高宽比eye_ratio,之后返回eye_ratio
如果高宽比小于0.3,我们认为视频中的人物闭了一次眼,如果人物多帧都在闭眼状态,我们定义3帧以内算一次闭眼
counter是闭眼次数,total是总闭眼次数,区别的总闭眼次数连续3帧闭眼算一次,counter算三次
首先创建正脸检测器,然后创建关键点检测器
这个在上一章提到过,不再赘述了
获取关键点坐标
提取左眼与右眼的关键点坐标,之后用它们计算眼镜的高宽比
@H_406_211@
计算两只眼镜平均的高宽比
计算左右眼凸包,然后把它们画出来
如果高宽比小于EYE_AR_ThrESH,COUNTER自加1
如果连续几帧都是闭眼的,算作一次闭眼TOTAL自加1
展示图像,如果展示过程中按ESC则退出图像,之后释放视频流并关闭所有窗口
我们opencv的专栏到这就结束了,如果有兴趣的朋友可以看一下这个链接的课程视频,本专栏是依据这个视频做的课程笔记 Opencv计算机视觉实战(Python版) - 网易云课堂
以上是脚本宝典为你收集整理的26.疲劳检测全部内容,希望文章能够帮你解决26.疲劳检测所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。