26.疲劳检测

2023-05-16

目录

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  展示图像


1  项目介绍

这个是我们上一章人脸检测的进阶版,还是使用之前的68个关键点,在这个项目中,我们通过计算双眼的举例来判断眨眼的次数,最终确认司机是否为疲劳状态

我们现在有这样一个开车的视频

我们在左上角将闭眼的次数Blinks和眼之间的横纵距离eye_ratio计算出来并写在视频的左上角

2  代码实现

2.1  导入库

scipy是做运算用的库,我们这里用它计算双眼之间的距离

2.2  定义68个关键点

2.3  定义eye_aspect_ratio()

这个函数是计算眼部高宽比例的

这个函数会传入眼部的七个关键点,我们先看一下这七个关键点

dist.euclidean()是计算两点之间欧式距离的,我们一共有三个距离

  • A 第1个点与第5个点的距离,也就是37与41点的距离
  • B 第2个点与第4个点的距离,也就是38与40点的距离
  • C 第0个点与第3个点的距离,也就是36与39点的距离

计算完A,B,C三个距离后,我们加AB距离加和之后除2(算出平均高度),然后再除宽度,计算眼镜的高宽比eye_ratio,之后返回eye_ratio

2.4  定义参数

2.5  定义阈值

如果高宽比小于0.3,我们认为视频中的人物闭了一次眼,如果人物多帧都在闭眼状态,我们定义3帧以内算一次闭眼

2.6  定义次数

counter是闭眼次数,total是总闭眼次数,区别的总闭眼次数连续3帧闭眼算一次,counter算三次

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  遍历每一张检测的人脸

获取关键点坐标

提取左眼与右眼的关键点坐标,之后用它们计算眼镜的高宽比

计算两只眼镜平均的高宽比

计算左右眼凸包,然后把它们画出来

如果高宽比小于EYE_AR_THRESH,COUNTER自加1

如果连续几帧都是闭眼的,算作一次闭眼TOTAL自加1

2.11.5  在图像上写字

2.11.6  展示图像

展示图像,如果展示过程中按ESC则退出图像,之后释放视频流并关闭所有窗口

我们opencv的专栏到这就结束了,如果有兴趣的朋友可以看一下这个链接的课程视频,本专栏是依据这个视频做的课程笔记 Opencv计算机视觉实战(Python版) - 网易云课堂

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

26.疲劳检测 的相关文章

随机推荐

  • 各种同质图神经网络模型的理论和节点表征学习任务的集合包rgb_experiment

    诸神缄默不语 个人CSDN博文目录 最近更新时间 xff1a 2023 5 10 最早更新时间 xff1a 2023 5 10 本文仅考虑同质图setting下的模型 对于异质图场景 xff0c 可以参考我写的另一篇博文 xff1a 异质图
  • Re 40:读论文 GL-GIN: Fast and Accurate Non-Autoregressive Model for Joint Multiple Intent Detection and

    诸神缄默不语 个人CSDN博文目录 论文名称 xff1a GL GIN Fast and Accurate Non Autoregressive Model for Joint Multiple Intent Detection and S
  • 用huggingface.transformers.AutoModelForTokenClassification实现命名实体识别任务

    诸神缄默不语 个人CSDN博文目录 huggingface transformers包 文档学习笔记 xff08 持续更新ing xff09 本文主要介绍使用AutoModelForTokenClassification在典型序列识别任务
  • 各种预训练模型的理论和调用方式大全

    诸神缄默不语 个人CSDN博文目录 本文主要以模型被提出的时间为顺序 xff0c 系统性介绍各种预训练模型的理论 xff08 尤其是相比之前工作的创新点 xff09 调用方法和表现效果 最近更新时间 xff1a 2023 5 10 最早更新
  • 对天乙社区bbscs8实现的详细分析三

    经过前面的分析 我们已经理清楚了业务层 接下来的部分将是web层部分 首先我们从web xml开始 我们知 道任何一个java web应用系统都是从WEB INF web xml启动的 根据servlet2 4规范filter执行是按照 w
  • linux下安装node和npm

    linux下安装node和npm 1 打开linux的命令窗口 xff0c 进入根目录 cd 2 使用wget命令下载node包 注 xff1a 这里作者下载的是16 14版本的node xff0c 如果有需要可以直接更换制定版本的node
  • FreeRTOS小知识点

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 FreeRTOS 中实现临界区的两种途径 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 51单片机连接ESP8266串口WiFi模块

    烧录固件 引脚连接 WiFi51单片机VCC3 3V xff08 5V连接时间过长可能会烧坏WiFi模块 xff09 GNDGNDCH PD3 3VGPIO0GNDUTXDTXDURXDRXD 烧录固件 打开烧录软件 xff0c 选择配置选
  • linux 远程可视化

    实验linux是vmware上的rhel6 0 xff0c 安装的是centos社区桌面 xff0c ip 192 168 31 223 xff0c win设置的固定ip 192 168 31 166 xff0c 且远程ssh软件用的是Se
  • 【七夕节】浪漫七夕,代码传情。将爱意变成绚烂的立体场景,给她(他)一个惊喜!(送代码)

    浪漫七夕 xff0c 代码传情 将爱意变成绚烂的立体场景 xff0c 给她 xff08 他 xff09 一个惊喜 xff01 一 python代码 xff08 情话转二进制编码 xff09 二 js代码部分 xff08 二进制编码生成立体场
  • 【可信执行环境】Keystone 简介

    当下 xff0c 安全挑战是一个非常突出的问题 可行执行环境TEE Trusted Execution Environment 成为必须满足的特性 1 安全挑战与TEE 1 1 安全挑战的来源 xff1a 1 1 1 被抄板 导致研发投入的
  • 超长docker笔记

    docker ce 和docker ee docker操作容器只需要id前4位就可以 docker编译安装 https blog csdn net lwyeluo article details 51765309 删除命令 docker r
  • 第1课【寄存器开发到库开发】寄存器 库 位操作 封装 分层 GPIO

    目录 基本知识框架课堂笔记什么是寄存器开发什么是库开发寄存器开发和库开发的关联寄存器开发的基本流程寄存器开发的优缺点 库开发的基本流程库开发的优缺点 结论 如何从寄存器开发实现库开发 xff08 GPIO口为例 xff0c 通过操作其寄存器
  • python str基本用法

    目录 1 没什么用的 1 1 调用实例属性后自动执行 getattribute 1 2 实例化后自动调用 new 1 3 将其他变量转变为字符串 repr 1 4 反向替代占位符 格式化 rmod 1 5 字符串反向做乘法 rmul 1 6
  • 32.QButtonGroup

    目录 1 创建和添加按钮 1 1 创建按钮组 1 2 添加按钮 addButton 2 查看按钮 2 3 获取当前选中的按钮 CheckedButton 3 从按钮组中移除按钮 removeButton 4 ID操作 4 1 设置 setI
  • Windows下的Win32串口编程

    在工业控制中 xff0c 工控机 xff08 一般都基于Windows平台 xff09 经常需要与智能仪表通过串口进行通信 串口通信方便易行 xff0c 应用广泛 一般情况下 xff0c 工控机和各智能仪表通过RS485总线进行通信 RS4
  • Ubuntu内网穿透

    本文借鉴 使用frp进行内网穿透 少数派 目录 1 准备材料 2 服务端部署 3 服务端后台运行 4 客户端部署 1 准备材料 1 一台具有公网IP的实体机 xff08 服务端 xff0c 也可以是vps 2 一台网页部署内网的实体机 客户
  • Ubuntu系统基本操作

    文章中所需要的文件可以在这里下载 链接 xff1a https pan baidu com s 1NYXxHD0jebngmCTEwgjGbQ 提取码 xff1a 2jyo 目录 1 安装谷歌浏览器 2 修改开机启动项 3 快捷键查找与设置
  • Ubuntu向日葵锁定之后忘记密码后解除锁定状态

    此操作会重置本机识别码与本机验证码 我们在使用向日葵的时候会使用锁定按钮 设置完密码之后 xff0c 我们忘了 xff0c 就会导致无法使用向日葵 重新安装也不能解决问题 xff0c 这个时候我们找到etc orayconfig conf
  • 26.疲劳检测

    目录 1 项目介绍 2 代码实现 2 1 导入库 2 2 定义68个关键点 2 3 定义eye aspect ratio 2 4 定义参数 2 5 定义阈值 2 6 定义次数 2 7 创建检测器 2 8 获取左眼与右眼的起始点与终止点 2