人眼疲倦检测开源算法
有小伙伴后台和小白说,能不能推荐几个适合入门的开源视觉项目,因为根据实际项目和代码学起来相对来说比较快。小白收集了一些比较简单的开源的项目,会陆陆续续的分享给大家,文末有源码地址,也可以点击“原文阅读”跳转。
这次小白为小伙伴们带来了和生活相关性很大的一个系统。司机疲劳驾驶一直都是交通事故高发的主要原因。因此本项目的开发者计划通过视觉观测人的眼睛来判断被观察者是否存在疲劳,接下来小白将为大家详细介绍该系统。
我们首先需要确定眼睛的位置,在确定眼睛位置之后,选择6个点来表示眼睛,具体如下图所示:
标号的顺序是从眼睛的左角开始,然后顺时针绕着眼睛进行编号。
根据这六个点我们便可以表示眼睛的睁开和闭上的状态。当开启的时候,上图中竖着的黄色箭头会变得比较高,而眼睛闭上(疲劳状态)这个箭头就会变矮。但是由于观看的距离不同,单纯用高度来表示状态缺少参考比较,因此提出如下公式表示状态:
用这个数据便可以相对客观的表示眼睛的状态,于是通过大量测试发现一个统计结果,当EAR小于0.25很多的时候,便是疲劳状态。
当然了,图像可能会存在一帧突然低于0.25,因此算法中采用的是判定连续20帧图像EAR都小于0.25才判定为疲劳驾驶
代码是用Python写成的,需要使用2.7或以上版本。
依赖库
import cv2
import immutils
import dlib
import scipy
运行测试示例:
python Drowsiness_Detection.py
具体关于代码的讲解参考:https://www.pyimagesearch.com/2017/05/08/drowsiness-detection-opencv/
项目在车的前方装置一个USB Webcam摄像头,如下图所示:
由于测试的视频比较大,这里小白只放了几张图片,感兴趣视频全部内容的可以去参考上面分享的链接
如果小伙伴想了解更多的关于项目的内容,可以通过下载代码,阅读里面的说明文档,也可以在自己的电脑上跑一下该程序。
https://github.com/akshaybahadur21/Drowsiness_Detection |