当前位置:   article > 正文

基于OpenCV的实时驾驶状态/驾驶行为检测系统(附教程和代码)_opencv疲劳驾驶代码

opencv疲劳驾驶代码

动机:

根据美国国家公路交通安全管理局的数据,每年约有10万起警方报告的交通事故涉及疲劳驾驶。这些事故导致超过1,550人死亡和71,000人受伤。然而,真实数字可能更高,因为很难确定司机在事故发生时是否疲劳驾驶。因此,我们尝试建立一个系统,检测人是否疲劳并提醒他。

安装和环境

Step 1: Update conda

conda update conda
  • 1

Step 2: Update anaconda

conda update anaconda 
  • 1

Step 3: Create a virtual environment

conda create -n env_dlib 
  • 1

Step 4: Activate the virtual environment

conda activate env_dlib
  • 1

Step 5: Install dlib

conda install -c conda-forge dlib 
  • 1

运行代码

python app1.py
  • 1

原理

疲劳检测的基本原理非常简单。首先使用 dlib 的正脸检测器检测人脸。一旦检测到人脸,我们尝试使用 dlib 的面部标记检测器检测面部标记。面部标记检测器返回68个(x,y)坐标,表示面部的不同区域,即嘴巴、左眉毛、右眉毛、右眼、左眼、鼻子和下巴。当然,我们并不需要所有的面部标记,这里我们只需要提取眼睛和嘴巴区域。

现在,在提取标记后,我们计算眼睛纵横比(EAR),如下所示:
该系统的工作可以分为两个部分:

  1. 检测或定位面部。

  2. 预测检测到的面部中重要区域的地标。

  3. `def eye_aspect_ratio(eye):

    Vertical eye landmarks

    A = dist.euclidean(eye[1], eye[5])
    B = dist.euclidean(eye[2], eye[4])

    Horizontal eye landmarks

    C = dist.euclidean(eye[0], eye[3])

    The EAR Equation

    EAR = (A + B) / (2.0 * C)
    return EAR`

一旦预测出结果,我们仅使用眼睛地标和嘴部地标来确定人的眼睛长宽比(EAR)和嘴部长宽比(MAR),以检查人是否困倦。EAR和MAR的计算如下所示。
在这里插入图片描述

眼睛区域由6个坐标标记。如果将EAR的值与某个特定的阈值进行比较,这些坐标可以用于判断眼睛是睁开还是闭合。
使用这个概念,我们计算了嘴长宽比
在这里插入图片描述

结果

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/237784
推荐阅读
相关标签
  

闽ICP备14008679号