python怎么连续计算各个坐标之间距离_使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别...

2023-11-09

使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别

前期文章我们分享了如何使用python与dlib来进行人脸识别,以及来进行人脸部分的识别,

如下图,dlib人脸数据把人脸分成了68个数据点,从图片可以看出,人脸识别主要是识别:人眉,人眼,人鼻,人嘴以及人脸下颚边框,每个人脸的部位都有不同的数据标签从1-68

当我们识别出人脸的这68个点,可以通过访问不同的数据点来检测到人脸的部分数据

· 口可以访问 [48,68] 。
· 右眉可以访问 [17,22]。
· 左眉可以访问 [22,27] 。
· 右眼可以访问 [36,42]。
· 左眼 可以访问 [42,48]。
· 鼻可以访问 [27,35]。
· 下巴边框可以访问 [0,17]

通过访问不同的数据点,来进行人脸上的部位检测,要想对人眼瞌睡检测,首先我们检测到人眼,下图可以看出人眼有6个数据点

通过这6个数据点,可以来定位人眼的6个数据点的坐标,从下图可以看出当人眼睁眼时,人眼上的6个数据点的坐标与人眼闭眼时的数据点坐标不完全一样,通过计算6个数据点的坐标差异,便可以通过距离的计算来判断人眼是否闭眼了,通过设置一个阈值,当人眼闭眼的时间超过阈值时,我们定义为这个人已经瞌睡了,此方案用于高速行驶的司机特别有效,以便检查司机师傅是否瞌睡了,若瞌睡了,可以发生报警等措施来叫醒司机,避免大量的车祸的发生

根据Soukupová和Čech在2016年的论文《 使用面部地标进行实时眼睛眨眼检测》,我们可以得出一个反映这种关系的方程,称为眼睛纵横比(EAR):

当检测到人眼时,通过实时计算人眼的纵横比,当人眼纵横比突然变小时,便可以通过此值来判断人眼闭眼了,通过设置的阈值来判断是否人眼瞌睡了

OK,有了以上的基本知识,就开始代码

导入第三方库(1-9行)

定义一个函数,来计算人眼纵横比

计算两组 垂直 眼界标之间的距离(第13和14行)

计算水平眼界标之间的距离 (15行)

最终利用计算公式计算眼睛纵横比(16行)

定义人眼纵横比阈值(19行,根据自己人眼大小来设置)

定义闭眼检查帧的次数(20行)

加载人脸检测与68点数据模型(26-27行)

获取左右人眼的坐标参数值(30-31)

从摄像头中获取视频帧(34-35行)

从视频中获取图片帧进行人脸数据点检测(37-45行,本段代码是上期文章分享的内容,不再详细注释)

提取人眼坐标,来计算人眼纵横比(55-60行)

可视化人眼(62-65行)

通过计算出的人眼纵横比来跟设置的阈值来进行对比

当计算的人眼纵横比小于阈值时记录一次,当连续超过50次检测到人眼纵横比小于阈值时说明人眼已经瞌睡(60-64行)

在视频上显示人眼的阈值(69-70行)

最后显示在视频中

头条号:人工智能研究所

微@信搜索:启示AI科技,

体验不一样的AI工具

微信搜索小程序:AI人工智能工具

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

python怎么连续计算各个坐标之间距离_使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别... 的相关文章

  • 毕业设计-基于深度学习的轮胎缺陷无损检测

    目录 前言 课题背景和意义 实现技术思路 一 基于深度学习的目标检测技术及研究 二 基于主成分残差逆变换的轮胎 X 射线图像缺陷检测方法 三 基于独立成分分析的轮胎缺陷特征提取及分类方法的研究 四 深度卷积神经网络技术 实现效果图样例 最后
  • 数据库文档管理化开源项目工具SmartSQL

    数据库文档管理化开源项目工具SmartSQL 为何写该博文 由于这段时间需要理清软件的相关表结构 以及在客户端操作时使用 SQL Server Profiler 来检索一些简单的CURD sql语句 为了更好高效的理清内部的一些表结构 视图
  • react eslint解决方案整理

    eslint 解决方案整理 最近在处理react项目中报的warning 进行了以下整理 参考文档 http eslint cn docs rules 项目中遇到warning的解决 xxx is defined but never use
  • 使用EKF融合odometry及imu数据

    整理资料发现早前学习robot pose ekf的笔记 大抵是一些原理基础的东西加一些自己的理解 可能有不太正确的地方 当时做工程遇到的情况为机器人在一些如光滑的地面上打滑的情形 期望使用EKF利用imu对odom数据进行校正 就结果来看
  • python 点云配准_TEASER++:快速鲁棒的C++点云配准库

    TEASER fast certifiable 3D registration TEASER is a fast and certifiably robust point cloud registration library written
  • 在腾讯开发 QQ IM 的工作体验是怎样的?

    转载 http blog csdn net kobejayandy article details 8685271 目录 一 引言 二 个人网站 三 Oracle 支付宝 旺旺 四 淘宝技术发展 Java时代 脱胎换骨 五 淘宝技术发展 J
  • NIO:通道Channel讲解

    了解了缓冲区后 下来需要了解真正传输数据的通道Channel Channel是做什么用的 再来简单回顾一下 通道顾名思义就是传递的介质 Channel就类似于传统IO中的流 是直接对接操作系统的 当我们处理好缓冲区后 就可以通过缓冲区对通道
  • linux的程序安装失败,linux 安装软件各种错误集锦及解决方法

    1 最小化安装了centos 但是使用ifconfig命令时候出现 bash ifconfig command not found 解决方法 yum y install net tools x86 64 2 bash getenforce
  • 注册mysql到服务中

    前言 如果命令行输入net start mysql 提示 服务名无效 就表示你还没有将mysql注册到服务中去 因为net start 服务名 启动的是win下注册的服务 接下来的教程会手把手的教你如何将MySQL注册到win服务里面 注册
  • PostgreSQL jdbc 9.4 支持load balance 和 connection failover了

    Postgres2015全国用户大会将于11月20至21日在北京丽亭华苑酒店召开 本次大会嘉宾阵容强大 国内顶级PostgreSQL数据库专家将悉数到场 并特邀欧洲 俄罗斯 日本 美国等国家和地区的数据库方面专家助阵 Postgres XC
  • js使用theamleaf的值

  • Fn+F11/F12无法调整屏幕亮度的问题

    设备管理器看下监视器是否显示通用即插即用显示器 双击打开 位置显示 在 Intel UHD Graphics 上 右击开始菜单 设备管理器 监视器 双击 如果不是的话就是其他乱七八糟的远程软件 或者是什么鬼东西给显示器安装了个软件驱动方便它
  • 求二叉树中度为1的结点个数

    内容 若用二叉链表作为二叉树的存储表示 设计算法求二叉树中度为1的结点个数 步骤 1 算法分析 本题需要采用二叉链表作为二叉树的存储结构 来求解二叉树中度为1的结点个数 大体上分为两部分 第一 建立二叉树 此处采用先序的方式建立二叉树 其次
  • 新电脑的正确打开方式——(近万字图文并茂详细分步骤讲解)【万一那天你就有新电脑了呢】包括个性化·等你来解锁哦

    新电脑买回来如何让配置 新电脑买回来如何装饰 新电脑买回来如何让电脑更干净 等等 这些问题都在困惑着大家 那么接下来我急来告诉大家 新电脑的正确打开方式吧 建议收藏此博客 万一那天你也有属于自己的新机了呢 似此星辰非昨夜 为谁风露立中宵 作
  • 计算机毕业设计 基于SpringBoot餐厅点餐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

    博主介绍 从事软件开发10年之余 专注于Java技术领域 Python人工智能及数据挖掘 小程序项目开发和Android项目开发等 CSDN 掘金 华为云 InfoQ 阿里云等平台优质作者 文末获取源码联系 精彩专栏推荐订阅 不然下次找不到
  • 03_uboot的源码目录分析

    一 文件夹 1 api 硬件无关的功能函数的API 这些函数是uboot本身使用的 uboot移植时基本不用管 2 api examples API相关的测试事例代码 3 board board是板的意思 就是开发板 这个文件夹下放的每一个
  • mysql优化(1)show命令 慢查询日志 explain profiling

    原文地址 http zhumeng8337797 blog 163 com blog static 1007689142012095142876 suggestedreading wumii 目录 一 优化概述 二 查询与索引优化分析 1性
  • 正则表达式判断是否以某字符串结尾

    前言 正则来实现判断他是否以指定字符串结尾 实现效果 实现思路 判断他是否以指定字符串结尾 实现代码 判断是否以 jpeg结尾 let str ajsjsjsjsjjsjjpeg let str1 jpegajsjsjsjsjjsjjpmm
  • Python 面向对象(二)

    6 2 继承 继承就是一个类可以获得另外一个类中的成员属性和成员方法 作用 减少代码 增加代码的复用功能 同时可以设置类与类直接的关系 继承与被继承的概念 被继承的类叫父类 也叫基类 也叫超类 用与继承的类 叫子类 也叫派生类 继承与被继承

随机推荐

  • 一步一步教你如何在Altium Designer中导入ALLEGRO的brd文件

    课题组其他人都用Allegro 我一个人死撑着用AD 共享设计时原理图还方便导入 PCB文件麻烦了 于是一直在找如何从AD中导入Allegro的brd文件的方法 一直未果 曾经找了个CAMCAD Pro 号称可以 但不会用 呵呵 也可能是不
  • python找色_Python-查找相似的颜色,最好的方法

    I ve made a function to find a color within a image and return x y Now I need to add a new function where I can find a c
  • uniapp scrollview设置显示滚动条

    需要在style中添加 v deep webkit scrollbar 滚动条整体样式 display block width 10rpx important height 10rpx important webkit appearance
  • 2015开源技术大会将于3月28日召开 设女性开源专场

    原文 http ostc csdn net 由 CSDN 腾讯 腾讯云 腾讯基金会主办的 开源技术大会 2015 Open Source Technology Conference 简称OSTC 官网 http ostc csdn net
  • 2019——JAVA 面试题大全(二)容器

    二 容器 1 java 容器都有哪些 Java 容器分为 Collection 和 Map 两大类 其下又有很多子类 如下所示 Collection List ArrayList LinkedList Vector Stack Set Ha
  • 一段C++代码的一生(C++代码编译过程详解)

    用分享的方式成长 用有趣的眼光看世界 欢迎来到12 26 25的博客 热爱编码 算法 知识总结 不定期更新有趣 有料 有营养内容 让我们共同学习 共同进步 好文推荐 从B站 哔哩哔哩 泄露的源码里发现了B站视频推荐的秘密 值得学习17个C
  • java heap space

    在网上一查可能是JAVA的堆栈设置太小的原因 结合网上的答案大致有这两种解决方法 1 设置环境变量 set JAVA OPTS Xms32m Xmx512m 可以根据自己机器的内存进行更改 但本人测试这种方法并没有解决问题 可能是还有哪里需
  • 钢铁缺陷检测挑战赛 11月第5名方案

    文章目录 零 写在最前 一 安装PaddleDetection 二 数据预处理 三 训练 四 评估模型 五 预测 六 生成比赛结果 7 总结 零 写在最前 该项目源于 飞桨学习赛 钢铁缺陷检测挑战赛 基于飞桨目标检测开发套件PaddleDe
  • Dubbo的使用及原理

    Dubbo是什么 Dubbo是阿里巴巴SOA服务化治理方案的核心框架 每天为2 000 个服务提供3 000 000 000 次访问量支持 并被广泛应用于阿里巴巴集团的各成员站点 Dubbo 是一个 分布式服务框架 致力于提供 高性能和透明
  • 基于NAudio实现录制声卡声音

    之前的文章 测试 net开源音频库NAudio 中介绍了基于NAudio模块中的WaveInEvent和WaveFileWriter类实现基本的录音功能 但存在一个问题 本来想录制视频中的声音 但录音过程中会把麦克风中的杂音 挪动物品的声音
  • Vue.js入门——指令大全

    什么是指令 Vue的指令是带有特殊前缀v 的HTML特性 他可以绑定一个表达式 并且把一些特性作用到DOM结构上去 下面我们来看一下常见的指令 1 v text v text指令用于将数据填充到标签中 作用于插值表达式类似 如果数据中有HT
  • 从关系型数据库到非关系型数据库

    原文地址 http blog csdn net robinjwong article details 18502195 1 关系型数据库 关系型数据库 是指采用了关系模型来组织数据的数据库 关系模型是在1970年由IBM的研究员E F Co
  • Opencv之cv2.minAreaRect

    目录 一 cv2 minAreaRect函数原型 二 minAreaRect函数返回rect对象 一 cv2 minAreaRect函数原型 cv2 minAreaRect Points 其中points是点集 数据类型为ndarray a
  • 怀旧服服务器荣誉系统是啥,怀旧服荣誉系统上线第一天:互刷出现 第一批R10指日可待?...

    千呼万唤 国服怀旧服P2阶段终于开放了 荣誉系统 世界BOSS全都在11月15日凌晨更新完成后加入到了游戏当中 怀旧服玩家也是早早地准备了起来 从凌晨更新完成的那一刻开始 国服各大服务器就进入到了激烈的世界PVP当中 之前还一片祥和的野外瞬
  • 定时器中断实验

    目录 一 什么是TIM 1 TIM定义 2 定时器分类 二 定时器中断的配置 1 定时器中断的配置流程 2 根据例程来看 三 TIM库函数介绍 四 跨文件使用变量的方法 五 关于定时器中断实验的一个问题 一 什么是TIM 1 TIM定义 T
  • oracle 管理之《sql命令》

    数据库其实就是柜子 柜中的抽屉是表空间 抽屉中的文件夹是数据文件 文件夹中的纸是表 写在纸上的信息就是数据 一 表空间管理 1 创建表空间 create tablespace ams datafile e app oracle oradat
  • 数据结构之美:如何优化内存和性能

    文章目录 什么是数据结构 内存优化 使用紧凑的数据类型 避免冗余存储 使用位运算 压缩数据 性能优化 使用适当的数据结构 减少不必要的复制 使用合适的算法 数据结构优化的案例分析 结论 欢迎来到数据结构学习专栏 探索数据结构之美 如何优化内
  • 立创梁山派GD32F450ZGT6--使用DMA实现多通道ADC采集

    这次调试有些久 缺乏的知识很多 最重要的是ADC的引脚配置为浮空之后 如果没有接入东西 其读取的ADC值是不确定的 所以在测试的时候 一定要把对应的电压接入ADC引脚 测量的值才是准确的 上代码 adc c include adc h 采样
  • 解决 PowerDesigner 错误 The generation has been cancelled…

    在生成为物理数据模型时出现错误 Thegeneration has been cancelled because errors have been found by the checkmodel 其实也是设置问题 点击PowerDesign
  • python怎么连续计算各个坐标之间距离_使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别...

    使用dlib OpenCV和Python进行人脸识别 人眼瞌睡识别 前期文章我们分享了如何使用python与dlib来进行人脸识别 以及来进行人脸部分的识别 如下图 dlib人脸数据把人脸分成了68个数据点 从图片可以看出 人脸识别主要是识