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

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

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

· 口可以访问 [48,68] 。

· 右眉可以访问 [17,22]。

· 左眉可以访问 [22,27] 。

· 右眼可以访问 [36,42]。

· 左眼 可以访问 [42,48]。

· 鼻可以访问 [27,35]。

· 下巴边框可以访问 [0,17]

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

人脸68点数据图

通过这6个数据点,可以来定位人眼的6个数据点的坐标,从下图可以看出当人眼睁眼时,人眼上的6个数据点的坐标与人眼闭眼时的数据点坐标不完全一样,通过计算6个数据点的坐标差异,便可以通过距离的计算来判断人眼是否眨眼了

人眼坐标

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

人眼纵横比公式

当检测到人眼时,通过实时计算人眼的纵横比,当人眼纵横比突然变小时,便可以通过此值来判断人眼眨眼了,也可以证明人脸不是照片

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

导入第三方库

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

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

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

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

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

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

定义检测到眨眼的帧数(设置为3,当3次检测到阈值小于设置值才算是一次正常的眨眼,也跟计算速度有关)

定义眨眼帧数与人眼眨眼数(23-24行)

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

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

从视频中,或者摄像头中获取视频帧(35-39行)

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

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

可视化人眼(62-65行)

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

当计算的人眼纵横比小于阈值时记录一次,当超过3次检测到人眼纵横比小于阈值时记录一次眨眼(67-74行)

在视频上显示人眼的阈值与眨眼次数(77-80行)

最后显示在视频中

人眼眨眼检测时人脸识别中很重要的一环,微信支付,支付宝支付很多时候需要识别是不是人脸或者是照片,通过人脸的眨眼检测,可以有效的来识别是否是正常的人脸,当然还有很多方法来检测是否是一个正常的人脸,比如现在超市的无人收银,让用户提供手机后4位,其实看是为了安全,其实也有这方面的考虑,小编是这样认为的,你觉得捏???

人眼定位python代码_使用dlib,OpenCV和Python进行人脸识别—人眼眨眼检测相关推荐

  1. latex附录中放python代码_在Latex中插入Python代码

    这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...

  2. Python+dlib+opencv实现简单的人脸识别

    目录 一.建立人脸数据集 1.采集人脸 2.采集对应20张图片的68个特征点数组和平均特征数组 二.人脸识别 三.总结 参考资料 接上一篇博客基于dlib+opencv3.4+python3.7的人脸 ...

  3. python代码_如何使用 Sphinx 给 Python 代码写文档

    最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka(作者) Python 代码可以在源码中包含文档.这种方式默认依靠 docst ...

  4. 20个python代码_有用的20个python代码段(4)

    有用的20个python代码段(4): 1.使用列举获取索引和值对 以下脚本使用列举来迭代列表中的值及其索引.my_list = ['a', 'b', 'c', 'd', 'e'] for index ...

  5. sublime运行python代码_怎么用sublime运行python

    首先需要安装一个Sublime Text(http://www.sublimetext.com/)和一个Python(https://www.python.org/downloads/) 接下来打开S ...

  6. 如何读懂python代码_教你如何阅读 Python 开源项目代码

    作者: Destiny 来源:https://learnku.com/articles/23010/teach-you-to-read-the-python-open-source-project-c ...

  7. apriori算法python代码_通俗易懂Apriori算法及Python实现

    本篇分为三个部分: 一.算法背景 啤酒与尿布故事: 某超市为增加销售量,提取出了他们超市所有的销售记录进行分析.在对这些小票数据进行分析时,发现男性顾客在购买婴儿尿片时,通常会顺便搭配带打啤酒来犒劳自 ...

  8. 石头剪刀布python代码_我的第一个python程序,石头剪刀布猜拳游戏

    从决定学习python到今天,已经过去了好1个月,买的几本书还没一本看完的,惭愧. 忙不是借口,是时候来点计划,来点坚持.写点什么吧,算是学习的记录,也是对自己的鞭策. 今天写一个猜字游戏,模仿正在读 ...

  9. 牛逼的python代码_牛逼了!Python代码补全利器,提高效率告别996!

    给大家介绍一款专门针对Python的代码自动补全利器: Kite,效果绝佳.它的使用条件很简单,支持多种IDE和操作系统,并且免费使用.支持Windows.Mac.Linux 支持Atom.PyCha ...

最新文章

  1. 在线实时大数据平台Storm本地模式运行的一个小发现
  2. CSS综合征病例,医药-churg-strauss 综合征 (css) 变应性嗜酸性肉芽肿.ppt
  3. Hbase的学习笔记(1)
  4. 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
  5. nginx echo 输出 检查配置正确性
  6. 自定义异常类RRException
  7. POJ 1151 Atlantis 线段树+扫描线
  8. 11 操作系统第三章 内存管理 内存的基本知识 内存管理 内存空间扩充 连续分配管理方式
  9. ginapi服务器性能,gin框架构建Api之:环境配置和路由
  10. 2017/12/29
  11. 微软Exchange Server 2010 SP1下载
  12. java jcmd,jcmd命令用法
  13. Python中迭代函数chain
  14. snp maf_Oracle MAF中的LOV
  15. 古罗马的幽灵--斗兽场
  16. GPU用GT1030与I3-8100之速度对比
  17. 数据分析六个步骤,一款BI工具即可全部完成
  18. 浅谈const int *,int const *与int *const
  19. Windows server 2003常用设置
  20. Cisco Cpos STM 配置示例

热门文章

  1. android学习笔记---32_文件断点上传器,解决多用户并发,以及自定义协议,注意协议中的漏洞
  2. 初学关键段容易忽略的问题
  3. github上传时出现error: src refspec master does not match any解决办法
  4. 迄今为止我所见过的将BP算法最好的PPT
  5. 初试cocos2d-x坐标系
  6. android boot.img 结构,android boot.img文件结构、拆包、打包
  7. oracle有没有稀疏列,稀疏 BLAS - Oracle® Developer Studio 12.5:性能库用户指南
  8. ctf php文件上传图片格式,CTF-WEB:文件上传
  9. vb.net 组合快捷键如何设置_你不知道的PPT快捷键
  10. 路由交换基础——DHCP工作原理及DHCP Relay