face++人脸识别接口实现原理(一)

本文介绍了如何在Android平台上使用face++接口实现人脸识别功能,包括人脸特征提取、登录验证和合影中人物识别。通过注册获取API密钥,使用java接口调用工具,实现图像上传、特征提取和JSON数据解析,以完成人脸识别的各项任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

  • 市面上,能够提供人脸识别解决方案的公司主要有,百度,科大讯飞,旷世face++,还有已经被facebook收购的face.com。这里涉及到的是旷世科技的人脸识别技术。旷世科技人脸识别技术,在国内得到了很广泛运用,其中最有名是,支付宝的刷脸验证登录技术,以及蚂蚁金服的刷脸验证技术。

需求:

在安卓平台上,开发一app,这个app可以:

  • 提取人脸特征,包括这个人表情(微笑,惊讶,平静,生气),年龄,是否戴眼镜,是否睁眼,肤色,性别,眼睛,鼻子,眉毛在脸部的位置(坐标)。

  • 实现登录验证

  • 将一张合影中的所有人的身份都识别出来。

原理:

  • 实际上,原理并不是很难理解。首先,你将一张图片,上传到服务器,服务器会提取你的面部特征,写进一个文件中,这文件会有一个唯一标识吗,叫做face_token,代表你的身份,然后服务器会把这些特征以及标识通过json数据响应给你。响应给你的json数据里包含面部特征,以及你的face_token。

  • 登录验证就是对比或者说匹配的过程,你通过终端拍摄或者从相册选择一张照片,然后上传到服务器,服务器首先提取你的面部特征,然后和你注册账号时提取的面部特征进行对比,如果相识度达到一定高度,就会认为是同一个人,然后服务器响应验证通过,进入账号。

  • 将一张合影中的所有人的身份都识别出来,原理和登录验证是一样,只不过多了一个工序。首先,服务器会探测一张图片中有多人,并且把能探测到人的脸部特征以及标识码以json数组形式都反馈给你,我们可以通过遍历标识码的方式,一个一个匹配,最后把结果汇总,反馈个用户即可。可能你会有疑惑,为什么要遍历标识码来验证,因为标识码是代表一个人的身份,如果用其他参数,比如是否戴眼镜,那么你会分不清反馈的结果到底指向得是那个人,进而看不出图片中的某个人和服务器反馈的那个人是否是同一个人。

准备

  • 注册face++ api_key Secret:

    登录官网,注册账号,进入开发者中心,注册免费体验版(正式版web api收费标准:一小时30元,一个月5000元,一年600000元,离线版sdk收费标准:每年300,000元起),然后创建应用程序,获取秘钥以及密码。

  • 通读官方文献,熟悉接口是怎么用的。

    进入官网api文档,了解相关接口,这里要注意的是需要下载java版的调用接口工具,这个工具不是必须,但是它可以省去你很长时间,里面把封装好了许多函数,方面我们调用。

需要用到技术:

  • javaSE语法,android平台相关知识(页面布局,网络通信,调取摄像头),解析json,图像压缩技术(上传大小有限制),手机权限获取。

实现:

  • 打开AS,创建新工程,将目录结构调整为project模式,lib文件夹添加java接口调用工具。如图(1)所示,右击工具包,点击add as lib…

  • 写页面布局(这不是重点,我直接给源码),初始化控件,绑定按钮,效果如图:

  • 注册人脸(此代码可以不断完善)

  1. 调取相机,拍照。
   private void take_photo() {
   
        // 设置相机拍照后照片保存路径
        mPictureFile = new File(Environment.getExternalStorageDirectory(),
                "picture" + System.currentTimeMillis()/1000 + ".jpg");
        // 启动拍照,并保存到临时文件
        Intent mIntent = new Intent();
        mIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPictureFile))
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值