人眼定位python代码_使用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个数据点
人脸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进行人脸识别—人眼眨眼检测相关推荐
- latex附录中放python代码_在Latex中插入Python代码
这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...
- Python+dlib+opencv实现简单的人脸识别
目录 一.建立人脸数据集 1.采集人脸 2.采集对应20张图片的68个特征点数组和平均特征数组 二.人脸识别 三.总结 参考资料 接上一篇博客基于dlib+opencv3.4+python3.7的人脸 ...
- python代码_如何使用 Sphinx 给 Python 代码写文档
最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka(作者) Python 代码可以在源码中包含文档.这种方式默认依靠 docst ...
- 20个python代码_有用的20个python代码段(4)
有用的20个python代码段(4): 1.使用列举获取索引和值对 以下脚本使用列举来迭代列表中的值及其索引.my_list = ['a', 'b', 'c', 'd', 'e'] for index ...
- sublime运行python代码_怎么用sublime运行python
首先需要安装一个Sublime Text(http://www.sublimetext.com/)和一个Python(https://www.python.org/downloads/) 接下来打开S ...
- 如何读懂python代码_教你如何阅读 Python 开源项目代码
作者: Destiny 来源:https://learnku.com/articles/23010/teach-you-to-read-the-python-open-source-project-c ...
- apriori算法python代码_通俗易懂Apriori算法及Python实现
本篇分为三个部分: 一.算法背景 啤酒与尿布故事: 某超市为增加销售量,提取出了他们超市所有的销售记录进行分析.在对这些小票数据进行分析时,发现男性顾客在购买婴儿尿片时,通常会顺便搭配带打啤酒来犒劳自 ...
- 石头剪刀布python代码_我的第一个python程序,石头剪刀布猜拳游戏
从决定学习python到今天,已经过去了好1个月,买的几本书还没一本看完的,惭愧. 忙不是借口,是时候来点计划,来点坚持.写点什么吧,算是学习的记录,也是对自己的鞭策. 今天写一个猜字游戏,模仿正在读 ...
- 牛逼的python代码_牛逼了!Python代码补全利器,提高效率告别996!
给大家介绍一款专门针对Python的代码自动补全利器: Kite,效果绝佳.它的使用条件很简单,支持多种IDE和操作系统,并且免费使用.支持Windows.Mac.Linux 支持Atom.PyCha ...
最新文章
- 在线实时大数据平台Storm本地模式运行的一个小发现
- CSS综合征病例,医药-churg-strauss 综合征 (css) 变应性嗜酸性肉芽肿.ppt
- Hbase的学习笔记(1)
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- nginx echo 输出 检查配置正确性
- 自定义异常类RRException
- POJ 1151 Atlantis 线段树+扫描线
- 11 操作系统第三章 内存管理 内存的基本知识 内存管理 内存空间扩充 连续分配管理方式
- ginapi服务器性能,gin框架构建Api之:环境配置和路由
- 2017/12/29
- 微软Exchange Server 2010 SP1下载
- java jcmd,jcmd命令用法
- Python中迭代函数chain
- snp maf_Oracle MAF中的LOV
- 古罗马的幽灵--斗兽场
- GPU用GT1030与I3-8100之速度对比
- 数据分析六个步骤,一款BI工具即可全部完成
- 浅谈const int *,int const *与int *const
- Windows server 2003常用设置
- Cisco Cpos STM 配置示例
热门文章
- android学习笔记---32_文件断点上传器,解决多用户并发,以及自定义协议,注意协议中的漏洞
- 初学关键段容易忽略的问题
- github上传时出现error: src refspec master does not match any解决办法
- 迄今为止我所见过的将BP算法最好的PPT
- 初试cocos2d-x坐标系
- android boot.img 结构,android boot.img文件结构、拆包、打包
- oracle有没有稀疏列,稀疏 BLAS - 
Oracle® Developer Studio 12.5:性能库用户指南
- ctf php文件上传图片格式,CTF-WEB:文件上传
- vb.net 组合快捷键如何设置_你不知道的PPT快捷键
- 路由交换基础——DHCP工作原理及DHCP Relay