基于OpenCV的实时驾驶状态/驾驶行为检测系统(附毕设代码)

简介: 基于OpenCV的实时驾驶状态/驾驶行为检测系统(附毕设代码)

动机:


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


安装和环境


Step 1: Update conda

conda update conda


Step 2: Update anaconda

conda update anaconda


Step 3: Create a virtual environment

conda create -n env_dlib


Step 4: Activate the virtual environment

conda activate env_dlib


Step 5: Install dlib

conda install -c conda-forge dlib


运行代码


python app1.py


原理


疲劳检测的基本原理非常简单。首先使用 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的计算如下所示。

3371f71d48d1691036127351cc89bbdd_4a7570679739487ea31fa9d408fad43b.png

眼睛区域由6个坐标标记。如果将EAR的值与某个特定的阈值进行比较,这些坐标可以用于判断眼睛是睁开还是闭合。

使用这个概念,我们计算了嘴长宽比

c3bfe11325ffb2d96987e48249d91089_2c9c768366d24be98c7fe1781fab3817.png


结果


f34f529d82c3bd9176c1fd96239fbbb5_485a1091c732421f9a04d8e992ac2ad8.png

c352418c0b65b2c61a6feb23b1a7daf0_70ff924a07694981bb8eef02c90a61fa.png


相关文章
|
2月前
|
机器学习/深度学习 监控 算法
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
52 3
|
2月前
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
96 1
|
2月前
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
65 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
2月前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
2月前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
27 2
|
2月前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
33 1
|
2月前
|
机器学习/深度学习 数据可视化 计算机视觉
基于opencv的车牌识别系统(UI界面采用tkinter设计)
基于opencv的车牌识别系统(UI界面采用tkinter设计)
37 0
|
2月前
|
机器学习/深度学习 缓存 数据可视化
基于Python_opencv的车牌识别系统
基于Python_opencv的车牌识别系统
37 0
|
2月前
|
算法 计算机视觉 Python
圆形检测算法-基于颜色和形状(opencv)
该代码实现了一个圆检测算法,用于识别视频中的红色、白色和蓝色圆形。通过将图像从RGB转换为HSV颜色空间,并设置对应颜色的阈值范围,提取出目标颜色的区域。接着对这些区域进行轮廓提取和面积筛选,使用霍夫圆变换检测圆形,并在原图上绘制检测结果。
81 0
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
下一篇
无影云桌面