使用OpenCV,Python和dlib进行眨眼检测及计数

前三篇博客学习了

  1. windows10+Python3.7安装dlib库进行面部标志识别
  2. python dlib实现面部标志识别
  3. 使用python,dlib,OpenCV提取眼睛,鼻子,嘴唇及下颌

这篇博客将进行进阶版的学习——眨眼检测。眨眼检测在现实中有非常重要的应用,可以用于睡意检测。 比如:每年有9万人因为疲劳驾驶死亡,睡意检测可以起到很好的提醒作用,挽救人的生命。让N多个家庭失去亲人,免于破碎。

传统的眨眼检测是:

  1. 首先眼睛定位;
  2. 阈值化找到白色的眼睛区域;
  3. 确定眼睛的“白色”区域是否消失了一段时间(表示眨眼)。

本文使用的眨眼检测是:

构建一个称为眼睛纵横比(EAR “eye aspect ratio”)的指标,EAR的原理是眼睛的纵横比,在睁着眼时是一个基本恒定的值,而在眨眼的瞬间,EAR会瞬间达到0,然后在回到恒定值。

这种眨眼检测方法快速,高效且易于实现。

1. EAR为什么可以成为判断眨眼的标准

如下图,通过应用人脸检测,面部标志检测可以得出眼睛的关键点:如下图所示6个点构成;
使用OpenCV,Python和dlib进行眨眼检测及计数_第1张图片
使用OpenCV,Python和dlib进行眨眼检测及计数_第2张图片


使用EAR进行判断的原理:睁开眼睛时眼睛的纵横比大约是恒定的,但眨眼时会迅速降至零。

2. 眨眼检测及原则

(1)面部检测
(2)面部标志检测
(3)根据索引找到左眼、右眼的位置,计算纵横比ear,求平均值
(4)判断是否眨眼:(有超过3帧的连续帧——ear低于阈值,则认为是进行了一次眨眼);

3. 优化

可采用第N维,第N-6,第N+6维均计算EAR指标,求平均值。

参考:

  • https://www.pyimagesearch.com/2017/04/24/eye-blink-detection-opencv-python-dlib/

你可能感兴趣的:(Python,Python,OpenCV,人脸识别,python,人工智能,人脸识别,眨眼检测)