继上一篇“Python人脸识别黑科技(一):50行代码运用Python+OpenCV实现人脸追踪+详细教程+快速入门+图像识”,那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁。代码量同样不多,你可以将这些代码运用在其它一些智能领域,如智能家居,进门的时候判断你是谁,也可以加入机器学习判断来的人是客人还是熟人。在讲之前我们会先适当的拓扑一下关于人脸识别的知识点。OK废话少说下面开始正是话题。

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

解锁原理分析:

原理呢,其实很简单,没有那么复杂难懂(当然除了官方语言之外)。我们先来通俗的说一下利用Face++实现人脸匹配的原理。现在你打开了摄像头,然后恰好你按下了抓取。抓取之后,你的脸部图片会上传到远程服务器,然后服务端会提取你的面部情况生成一个唯一的指纹(标识码),这个指纹在Face++里面叫做face_token这个我们后面会继续讲到,这个指纹就代表你目前的身份。

标题

上传完经过服务端分析收录之后,服务端会通过json发送给你一个数据包,这个数据包里面有你面部全部特征。

当你拿到服务端返回过来的json之后,将face_token提取出来(这很重要,face_token相当于一把钥匙)然后你把拿到的face_token放到python的if里面去判断如果face_token相符就验证成功,如果不相符那么解锁失败。

环境拓扑:

操作系统:windows7

Python版本:python2.7

OpenCV版本:2.x

Face++接口

实现方案:

1.上传面孔(这个上篇文章我们已经实现摄像头抓取,这篇文章我们不做啰嗦,直接用一张面部图片代替)上传后json会返回面部指纹(face_token)

2.创建人脸集合,并将步骤1返回的face_token加入到集合中去

3.通过python的if判断是否收录当前面孔

代码部分:

1.获取面孔face_token:

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

这里重点说一下request里面的内容:

api规定是要post提交,所以这里用了request.post()

传输的内容为请求的URL,图片路径(必填!可以是本地绝对路径,也可以是网络图片分别为image_file、image_url)data数据也就是payload里面的参数:

apikey/apisecret必填 没有的自行申请

return_attributes选填 里面有返回的数据 有年龄性别等等

return_landmark选填 是否检测返回人脸关键点0为不返回1为检测83个关键点2为检测106个关键点

运行效果:

我们随便找一张照片(对像素有要求的 切记 不然有的可能报错)

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

我们可以看到这个返回的json包里有很多的值,我们这里最重要的就是拿到这张脸的face_toen,然后保存起来,收录到服务端的时候需要。

注:这里可能有些朋友在网上随便找的照片可能报错,这很可能是图片像素的问题,尽量找高清的,运行后,人脸部分会被绿框标识。

2.创建人脸集合,并加入face_token

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

face_tokens里面填的就是刚才奥巴马图片返回的face_token,不要填错哦~

面部集合的名字也要记住,待会查询的时候也会用到的。

将上一部分获取到的face_token加入到一个新建的人脸集合中。

下次人脸对比将直接跟服务端收录的做指纹对比。这里再简单的点一下payload里面的几个参数:

display_name:人脸集合的名字

outer_id:FaceSet全局自定义标识

force_merge:

0:不将 face_tokens 加入已存在的 FaceSet 中,直接返回 FACESET_EXIST 错误

1:将 face_tokens 加入已存在的 FaceSet 中

face_tokens:传入的人脸标识

运行效果:

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

运行完毕后,会返回一个faceset_token,这个地方我们要记录下来,因为我们已经把我们的奥巴马的facetoken上传到服务端的我们创建的集合里了,这个faceset token就是我们的面部集合id 或者说是一个相册都可以。

3.判断是否为管理员:

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

我们将奥巴马的面部值(face token)放入python的if里面,将要去查询的面部集合(相册)设置为我们前面获取的faceset tokens,然后我们随便照一张照片匹配一下。

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

笔记本摄像头太low,很难识别,凑合看下效果吧,直接识别人脸还行。

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

完成~

当然,按理说到现在应该开始有喷子来喷,用图片解锁不安全了吧,没关系,如果你想做的更高级,完全可以加上一些摇头 眨眼等等乱七八糟的验证,安全性是可以做到的。

转自:Python雁横

部分来自:www.ruanbe.com

Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁相关推荐

  1. 戴上口罩AI变“脸盲”?口罩人脸识别黑科技来袭

    疫情期间,口罩在全国抗疫中起到了关键作用.但在口罩成为每一位公民"标配"的同时,对诸如"刷脸"支付.高铁闸机身份认证等需要人脸识别的场景提出了挑战. 口罩.帽子 ...

  2. 人脸识别撞脸名画_人脸识别“黑科技”蚂蚁金服“遇见名画中的自己”火爆东博会...

    ​也许你撞过衣服.撞过名字,但是你是否想过你会与世界名画中的"古人"撞脸?当下,蚂蚁金服首次把黑科技"遇见名画中的自己"带进了第13届中国-东盟博览会. 东博会 ...

  3. 人脸识别黑科技正式入侵,消亡还是苏醒?人工智能测试势不可挡!

    摘要:当前,人脸识别技术已经在诸多领域取得广泛应用,但其风险也一直为外界关注,尤其是对风险容忍度较低的金融行业来说,用户验证环节如果出现漏洞,就可能造成巨大损失.本文将以一个项目实例出发,分享在测试人 ...

  4. 高考监考引入人脸识别黑科技?更多高新监控技术为高考保驾护航!

    高考是我国选拔考试中最公平相对最综合的选拔方式,同时,也是一场决定资源分配的考试.虽然说高考对人生的影响并不是决定性的,但是对于大多数考生来说,高考是一项重要.严肃的人生选择,因此对于高考作弊的防范也 ...

  5. 追平iPhone!搭载IFAA人脸识别黑科技,这款国产安卓手机厉害了

    2017年9月,iPhone X上市带动了无数个Face ID相关的话题.苹果Face ID技术采用的是3D结构光技术,由于苹果收购了提供该技术的以色列公司,使得iPhone X 的Face ID拥有 ...

  6. 黑科技,教你用Python打电话,控制手机技术,快来学一下

    跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化功能,自娱自乐,主要是通过小案例引出相关技术 一.环境配置: 二.查看元素 用左上角的工具审查元素,比如*键,可以看到i ...

  7. 百度AI人脸识别与检测二:学生人脸识别打卡签到系统主界面功能需求和设计以及通过Python实现界面运行

    <百度AI人脸识别与检测>专栏为项目专栏,从零到一,从无到有开发一个学生人脸识别签到系统:主要用到的技术有百度开放平台中的人脸检测.人脸识别.Python图形界面开发PyQt5.线程的管理 ...

  8. 从零开始写高性能的人脸识别服务器(二)

    文章目录 从零开始写高性能的人脸识别服务器(二) 1 高性能服务器架构 1.1 BIO 1.2 NIO 1.3 架构发展 1.4 网络IO模型对比 2 protobuf序列化协议 2.1 什么是序列化 ...

  9. python人脸识别门禁系统毕设_树莓派人脸识别门禁系统代码以及代码分析——opencv拍照调用FACE++处理...

    树莓派人脸识别门禁系统的总体设计 硬件包括:树莓派3B.电源模块.转5V降压模块.触摸感应传感器模块.声光报警模块和驱动模块. 由此设计出的人脸识别门禁系统总体结构框图如下: 总体结构框图 程序运行时 ...

最新文章

  1. 秩、标量、矢量、矩阵
  2. JAVA的23种设计模式
  3. 知乎招聘搜索算法实习生!邀你共建知乎搜索引擎!
  4. oracle tirger_又一次发现Oracle太美之awr相关脚本简介
  5. 工业大数据有哪些特征
  6. 处理顶点——通过切线空间的凹凸映射添加逐像素细节
  7. C. Oh Those Palindromes
  8. 几个病毒代码(c++)
  9. c语言编程 碰撞的小球,小球碰撞游戏程序代码,求注释,越详细越好》》》
  10. java 取余 负数_Java中有关负数取余的计算
  11. JedisClusterException: No way to dispatch this command to Redis Cluster because keys have different
  12. STM32F100X RCC_APB2Periph_AFIO--复用IO时钟的使用
  13. 洛谷 P1008三连击 C语言
  14. ArcGIS制作栅格动图
  15. Xmanager 5问题记录
  16. Python之图片转PDF
  17. 人工智能、深度学习、机器学习常见面试题41~55
  18. 惟伊·京汉方内部启动会圆满成功
  19. 【EFI系统分区】关于EFI系统分区的说明
  20. STM32 PAJ7620U2手势识别模块(IIC通信)程序源码详解

热门文章

  1. 找到数据库中最大数据量的表
  2. JavaScript面试题111-120
  3. 制造行业实施作业成本法案例(AMT 邓为民)
  4. LeetCode部分刷题笔记!!!JavaScript!!!
  5. Drone SETTINGS 页面没有 Trusted
  6. 编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个Employee 对象的生日,则将该雇员的工资增加100元。
  7. 一款勒索病毒的详细分析
  8. 1.swift 常量和变量
  9. 妹子说头像爬的太慢?升级到多线程程序爬取头像
  10. vivo和OPPO兄弟相煎从国内延伸至东南亚市场