(九)基于face++的人脸识别功能

上一章我们使用完成了人脸的检测功能,这一次我们要完成人脸识别,也就是识别不同的人脸。当摄像头识别到有人脸的时候,就会抓拍这张图片,并在事先准备好的人脸库中进行查找匹配,判断这张人脸是否与库中的某一人脸匹配,如果有,匹配成功,如果没有,匹配失败。

OpenCV有官方的人脸检测haar算子,检测的人脸还算比较准确,但是官方的人脸检测算法的正确率就比较低了,这在正式投产的时候是绝对不允许的,所以我们不能使用官方的人脸识别算法。那么只有两条路可以走了,第一,自己写一个识别率较高的人脸识别算法,还有人脸查找比对算法,这种方法对工程师的要求就极其的高了,一般光一个人是难以完成的。第二,使用别人已经完善的算法,通过API接口进行调用。

第二种方法是比较可行的,在对比了互联网上几家比较有名的机器视觉公司,我最后选择了旷视科技的face++来完成这次的任务。

首先,face++可以申请开发者账号,并且有一个免费的key密钥,而且大部分功能都可以使用,速度和正确率都很不错。(最重要的是可以免费使用,对于在校开发者来说,实在无法抵御)

二话不说,感觉先去官网注册个账号

https://console.faceplusplus.com.cn

至于API文档我就不细说了,这个还是要大家仔细看一遍才能领悟。

Face++的API是基于HTTP的POST方法进行访问,并且会返回JSON格式的数据。而且官方友好的给出了实例和SDK,SDK都给了,还有比这更友好的吗?二话不说,赶紧下载一个。

我使用QT进行开发,所以下载C++接入工具,这个接入工具是一个打包好的代码包,用户不需要知道POST的具体格式,也不需要知道如何发起POST访问,只需要通过调用SDK里面的函数,将需要的参数传进去,SDK就会帮你完成所有与网络访问有关的代码,并且返回JSON格式的字符串。是不是十分的友好,减少了很多开发遇到的问题。


接下来我说一下识别一个人脸的具体流程。代码我这里就不展示了,可以直接去github里下载。API参数自己看官方给的文档吧。

 

首先我们要创建一个人脸库,免费用户可以创建1000个库,每个库可以存放1万个人脸,肯定是足够用了。创建人脸库的API文档如下

https://console.faceplusplus.com.cn/documents/4888391

创建完成后会返回一个标识符face_tokens,这个一定要记下来,他是这个人脸库的唯一标识符,之后的添加人脸,删除人脸,搜索全部要用到他。

然后往人脸库添加一个人脸

https://console.faceplusplus.com.cn/documents/4888373

使用detect API,传入一张图片(这张图片可以从本地读取,传入图片的地址),他会返回这张图片的唯一标识符face_token,接着使用增加人脸的API

https://console.faceplusplus.com.cn/documents/4888389

将刚刚返回的faceset_token传入,face_tokens传入人脸库的,这样就将这张照片中的人脸特征添加到了人脸库中。

 

如何搜索人脸

使用人脸搜索的API

https://console.faceplusplus.com.cn/documents/4888381

image_file传入需要对比的图片,faceset_token传入人脸库的识别符。

返回值是人脸库中与传入图片最相思的face_token标签,可以通过confidence和thresholds参数来确认是否为同一个人,也可以将人脸库中的face_token都记录在本地,然后进行遍历,就可以确认扫脸人的身份了。

 

注意的问题

因为我是在Ubuntu环境下进行开发,在移植SDK的时候碰到一些问题,官方给的SDK中,curl的库是不能用的,导致编译时报错,我的解决方法如下

apt-get install libcurl4-openssl-dev

然后在qt的.pro文件中加入

/usr/lib/x86_64-linux-gnu/libcurl*.so*

还有JSONCPP库在Ubuntu环境下也有问题,但是QT自带了JSON库,所以我就没有用官方SDK中的JSON库。

 

完整的源码放在github上,有需要可以自行下载。 代码名称为190526.zip

https://github.com/ljy980330/opencv_face_sys

 

有任何问题可以在下面给我留言!大家一起学习!

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值