先看看效果图吧。 请满足好奇心。 哈哈哈
成功登录脸部
登录失败
注册脸
人脸库
一、创作动机
很久以前,公司同事就已经实现了在网站登录模块中添加人脸识别登录功能,自己也在自己的系统中添加了这样的功能。 通过不断的学习和搜索,百度已经为我们提供了这样的界面,让我们可以在自己的系统中快速集成人脸识别的功能,而且这个界面可以无限调用。
二.需求介绍
系统无需输入任何帐户或密码,即可直接通过脸部识别实现登录。
三.使用界面介绍
此次演示主要涉及人脸识别模块的两个界面(人脸注册、人脸搜索)
人脸注册界面说明:
为了从脸部库中添加用户,设定有多个用户组和组内用户的脸部照片,
典型应用场景:建立人脸库,包括会员人脸注册、现有用户人脸信息的补充等。 为了从脸部库中添加用户,设定有多个用户组和组内用户的脸部照片,
典型应用场景:建立人脸库,包括会员人脸注册、现有用户人脸信息的补充等。
官方网站请求案例demo
参数解释:image :这与imagetype相对应,如果imagetype为url,则image为url路径;如果是base64,则image为base64字节码;groupid为脸部
脸部注册,对demo的请求
人脸搜索界面说明:
因为我在这里使用的是v3版本,所以v3版本已经把人脸认证转移到了人脸搜索上。 面部搜索有两种模式。 一种是用userid在人脸库中查找人脸并与当前人脸进行比较,另一种是直接在人脸库中进行比较。 具体使用哪一个因场景而异,但我采用的是后者。 为了更容易地实现脸部认证,不需要输入文字。
官方网站demo
参数介绍:options:其中重要的是user_id这个选择,如果不添加这个参数,按照上述第二种方式认证,如果添加,按照第一种方式认证; gropidlist:在指定的脸部库中搜索匹配项。 其他参数与脸部注册类似。
脸部认证守护程序
四.开始编码前的准备
获取APP_ID、API_KEY、API_KEY和SECRET_KEY
具体步骤如下:
单击链接https://login.bce.baidu.com/以访问官方网站,然后使用百度云帐户登录(
登录后,按照箭头上的说明进入控制台,创建APP应用程序
创建后,可以获得所需的信息
五.准备工作介绍结束后,开始编码吧
首先准备前端,打开电脑摄像头。 我们在进行脸部注册和登录时,需要带上相机拍摄的图像,用base64编码,传递到后台。 人脸注册还需要额外的ID来表示当前用户,用户登录成功后将返回此ID。
前端界面
后台处理
引入必要的依赖,根据你申请不同版本的人脸识别,v2使用v2版的,我在这里使用v3版的依赖
依赖于api
因为我是基于springboot框架开发的,所以一开始我打算使用控制器处理面部注册和注册的请求,但是在调试过程中一直报告错误。 dto instantiate [ com.Baidu.AIP.face.AIP face ] : nodefaultcoont nestedexceptionisjava.lang.nosuchmethodexception : 说是找不到这个,还是在网上查也解决不了,这时看到了介绍百度云的人的脸
脸部登录:
查阅文档发现在登录和注册之都会使用到AipFace,通过这个配置初始化的以下参数,参数分别是在编码之前我们准备的三个参数
获取APP_ID 、API_KEY、API_KEY,SECRET_KEY
一行代码就可配置
AipFace client =new AipFace(APP_ID, API_KEY, SECRET_KEY);
登录时后台接受到一个参数 String img(base64编码的)
拿到image后我们就可以进行身份的验证,代码如下:这里调用了apiface的search方法,使用人脸搜索的第二种方式,
参数解释:
image:后台接受到的img(base64)
imageType:base64(和上面对应)
groupidlist:(在指定的人脸库组中查找,这是我们手动在后台新建的)
人脸登录
返回结果:是一个json对象,我这里使用阿里的fastjson进行了转换成实体,
主要参数解释:
result:如果为空,则说明为检测到人脸
user_list:返回的用户列表,取决你设置max_user_num参数
score:我们判断是否认证成功的依据,一般匹配度在90以上基本是从人脸库中找到相似度非常高的,也就是认证成功,
返回结果
本系统中的判断依据
人脸注册
后端处理:接受的参数
userid:用户输入的登录账号
img:摄像头提取的照片 base64
人脸注册使用的是apiface的adduser方法,很简单,传入相应参数,直接调用
其中参数options是可选项,其他的参数和人脸登录是一样的,只是多了一个userid,用来标识当前注册的用户。
人脸注册
返回结果解释:判断是否注册成功,直接拿到error_msg去和SUCCESS匹配,相等则注册成功,否则注册失败。
注册结果
到这里,整个集成工作已完成,谢谢大家能够看到这,给个小心吧。
福利大放送
关注微信公众号“AI码师”,领取面试资料和最新全套微服务教程