AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)

摘要: 好吧,伙计们,我回来了。说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁。代码量同样不多,你可以将这些代码运用在其它一些智能领域,如智能家居,进门的时候判断你是谁,也可以加入机器学习判断来的人是客人还是熟人。

好吧,伙计们,我回来了。说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口....


那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁。代码量同样不多,你可以将这些代码运用在其它一些智能领域,如智能家居,进门的时候判断你是谁,也可以加入机器学习判断来的人是客人还是熟人。在讲之前我们会先适当的拓扑一下关于人脸识别的知识点。OK废话少说下面开始正是话题。



解锁原理:

原理呢,其实很简单,没有那么复杂难懂(当然除了官方语言之外)。我们先来通俗的说一下利用Face++实现人脸匹配的原理。给大家推荐一个学习交流的地方:719+139+688,现在你打开了摄像头,然后恰好你按下了抓取。抓取之后,你的脸部图片会上传到远程服务器,然后服务端会提取你的面部情况生成一个唯一的指纹(标识码),这个指纹在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:



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

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

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

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

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

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

运行效果:

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





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

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

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



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:传入的人脸标识

运行效果:


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

3.判断是否为管理员:


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


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


完成~

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


作者:雁横

原文链接

本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java foreach并行_使用foreach在Java中迭代并行数组的漂亮方法

Sean Adkinso..9这是一个有趣的练习.我创建了一个名为ParallelList的对象,它接受可变数量的类型化列表,并且可以遍历每个索引处的值(作为值列表返回):public class ParallelList implements Iterable> {private final List> lists;public ParallelList(List... lists) {t…

zTree笔记,设置无法勾选父节点(禁用父节点)和父节点禁用时回显选中子节点时关联父节点状态

名称链接zTree APIhttp://www.treejs.cn/v3/api.phpzTree Demohttp://www.treejs.cn/v3/demo.php#_101 最近又用到了zTree,虽然zTree的APi已经很全很方便很易懂了,但是难免有的方法找不到。为了方便他人方便自己,做下笔记记录下 zTree笔记1 …

你需要知道的那些 redis 数据结构(前篇)

戳蓝字“CSDN云计算”关注我们哦! 作者 | 饿了么物流技术团队来源 | CSDN 企业博客redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存、或是实现分布式锁等等。对于其 api 中提供的几种数据结构,大家也使用得得心应手。api…

Tensorflow快餐教程(6) - 矩阵分解

摘要: 特征分解,奇异值分解,Moore-Penrose广义逆矩阵分解特征向量和特征值我们在《线性代数》课学过方阵的特征向量和特征值。定义:设A∈FnnA∈Fnn是n阶方阵。如果存在非零向量X∈Fn1X∈Fn1使AXλXAXλX对某个常数λ∈Fλ∈F成立&…

ZTree的全选 反选 全不选 取消 清空

全选 //全选$(#c_all).on(click,function (e) {var zTree $.fn.zTree.getZTreeObj("treeMenu");//得到tree对象 treeMenu是我的treeidvar node zTree.getNodes();//得到全部节点var nodes zTree.transformToArray(node);//全部节点转换成数组arrayvar checkNode …

对数周期天线hfss建模_HFSS也有金手指,FADDM招式详解

FADDM(Finite Array Domain Decomposition Method)即有限大阵区域分解法是HFSS针对周期阵列天线的一种高效仿真方法,这种方法不仅能提升天线阵列建模和求解的效率,还能保证仿真结果的精准度。FADDM的优势同样的硬件可求解更大规模的阵列与在HFSS全模型求解具有同样精…

Tensorflow快餐教程(7) - 梯度下降

摘要: 梯度下降梯度下降学习完基础知识和矩阵运算之后,我们再回头看下第一节讲的线性回归的代码:import tensorflow as tf import numpy as nptrX np.linspace(-1, 1, 101) trY 2 * trX np.random.randn(*trX.shape) * 0.33 # 创建一些线性…

php网页执行流程,PHP程序的执行流程

PHP程序的执行流程为了以后能开发PHP扩展,就一定要了解PHP的执行顺序。这篇文章就是为C开发PHP扩展做铺垫。Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP,我们会生成一个mod_php5.so的模块。Apache加载这个模块,在url访…

腾讯物联网操作系统正式开源,最小体积仅1.8 KB

9月18日,腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本,提升开发效率&…

云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍

摘要: 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目,可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解,如何去看待语言的设计,其实是我们去学习一个语言的核心。演讲嘉宾简介…

你的数据安全么?Hadoop再曝安全漏洞| 黑客利用Hadoop Yarn资源管理系统未授权访问漏洞进行攻击

摘要: 4月30日,阿里云发现,俄罗斯黑客利用Hadoop Yarn资源管理系统REST API未授权访问漏洞进行攻击。 Hadoop是一款由Apache基金会推出的分布式系统框架,它通过著名的 MapReduce 算法进行分布式处理,Yarn是Hadoop集群的…

linux建立软连接

格式命令ln -s 源文件的绝对路径 目标文件的绝对路径ln -s /opt/libreoffice6.3/program/soffice /usr/bin/soffice需求把soffice 和/usr/bin/soffice 建立软连接现在执行命令/opt/libreoffice6.3/program/soffice --headless --invisible --convert-to pdf 3.19m.doc建立软连接…

博文强识|进阶企业大咖

出品 | CSDN云计算 每个周三周五,和小编共同分享优秀博文,一起遨游在知识的海洋。 你需要知道的那些 redis 数据结构(前篇) redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存、或是实现分布式锁等…

php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例

本文主要和大家分享微信小程序模拟下拉菜单开发实例,希望能帮助到大家。一.知识点1.实现动态显示和隐藏某个控件列表1data:{open:false},showitem:function(){this.setData({open:!this.data.open})},.display_show{display: block;}.display_none{display: none;}2…

算法导论 pdf_学习数据结构和算法最好的书是什么?

-----------通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友。由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜。我这免费写给你看,多宣传原创作者是…

Tensorflow快餐教程(8) - 深度学习简史

摘要: 深度学习简史深度学习简史从机器学习流派说起如果要给机器学习划分流派的话,初步划分可以分为『归纳学习』和『统计学习』两大类。所谓『归纳学习』,就跟我们平时学习所用的归纳法差不多,也叫『从样例中学习』。归纳学习又分…

usb设备驱动程序(一)

代码&#xff1a; #include <linux/atomic.h> #include <linux/kernel.h> #include <linux/list.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/usb.h> #include <linux/videodev2.h> #include <linux…

linux 动态传参执行shell脚本

举个栗子&#xff1a; 我想执行的命令如下 /usr/bin/soffice --headless --invisible --convert-to pdf 3.doc但是这样命令就写死了&#xff0c;如何动态传参数&#xff0c;执行shell脚本呢&#xff1f; 步骤释义说明执行命令①创建一个2.sh的文件vim 2.sh②把通用的命令复制…

Tensorflow快餐教程(9) - 卷积

摘要&#xff1a; 卷积的计算方法卷积卷积就是滑动中提取特征的过程在数学中&#xff0c;卷积convolution是一种函数的定义。它是通过两个函数f和g生成第三个函数的一种数学算子&#xff0c;表征函数f与g经过翻转和平移的重叠部分的面积。其定义为&#xff1a;h(x)f(x)∗g(x)∫…

php websocket 连接已断开连接,客户端websocket 无法连接上PHP socket问题

我客户端是用c写得websocket客户端我请求的地址是ws://127.0.0.1:100322 (我请求ws://echo.websocket.org这个是可以的说明客户端代码是没问题的 问题就在服务端)输出[1405476678:7805] NOTICE: Initial logging level 7[1405476678:7806] NOTICE: Library version: 1.3 1544a2…