腾讯云人脸识别 活体检测 人员库管理

6 篇文章 0 订阅

人脸识别如果无特殊要求的话流程应该是:

  1. 通过前端传来的图片检测是否为活体。
  2. 通过用户或其他方式获取当前用户所在人员库,没有时自动创建。
  3. 判断当前用户是否为第一次使用人脸识别,第一次使用时应该是收入用户人脸数据(创建人员)。
  4. 如果用户是第二次使用人脸识别,应该走人员检测接口,通过当前用户的人员ID和当前获取到的图片检测。
  5. 第三步和第四步是同一等级,一次只能走其中一个,再判断结果并把处理结果返还给前端。

安装腾讯云SDK

composer安装

  • 选择需要的版本添加到项目的composer.json文件中。
  • 添加完以后直接composer更新即可。

获取图片

人脸识别都依赖于图像,所以第一步我们应该获取前端传过来的图片,如果不需要保存的话让前端传一个Base64字符串,直接用base64来进行活体检测,如果需要保存就先保存图片再拿到图片的URL地址,也可以直接获取到当前图片的base64字符串。

如果图片不需要前端及时上传,那直接获取数据库保存的URL即可。

use文件

use TencentCloud\Bda\V20200324\Models\CreateGroupRequest;
use TencentCloud\Bda\V20200324\Models\DeletePersonRequest;
use TencentCloud\Iai\V20200303\Models\CreatePersonRequest;
use TencentCloud\Common\Credential;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Iai\V20200303\IaiClient;
use TencentCloud\Iai\V20200303\Models\DetectLiveFaceRequest;
use TencentCloud\Iai\V20200303\Models\VerifyPersonRequest;

引用的文件可根据自己的需求进行删减
注意:SDK中会包含低版本的代码,所以引用的文件一定要跟API Explorer中生成的一样,我就引用过低版本,跟腾讯技术人员找了半天都没找到问题。

活体检测

全称是:人脸静态活体检测,点击进入腾讯云官方文档

//实例化一个证书对象,入参需要腾讯云账户secretId,secretKey
$cred = new Credential("", "");
// 实例化一个http选项
$httpProfile = new HttpProfile();
// 指定接入地域(默认就近接入)
$httpProfile->setEndpoint("iai.tencentcloudapi.com");
//实例化客户端
$clientProfile = new ClientProfile();
//配置http
$clientProfile->setHttpProfile($httpProfile);
//实例化人脸识别对象 第二个参数是地域参数
$client = new IaiClient($cred, "ap-chongqing", $clientProfile);
//人脸识别图像对象
$req = new DetectLiveFaceRequest();
//组装请求参数 我当前使用的是URL 如果是base64的话可以使用:["Image"=>$base64]
$params = array(
	"Url" => $imgUrl
);
//赋值json化数据
$req->fromJsonString(json_encode($params));
//这里加try的原因是如果当前图像检测有误,或参数有误如直接报错
try {
	//进行活体检测
	$resp = $client->DetectLiveFace($req);
	//获取请求结果
	$res = $resp->toJsonString();
	//请求结果转数组
	$res = json_decode($res, true);
}catch(TencentCloudSDKException $e) {
	return $this->setErrorData(40006,$e->getMessage());
}
//判断结果 这一步是进一步判断 也可以省掉 直接进行下一步判断
if(empty($res["Score"])){
	return $this->setErrorData(40005,"验证失败,请重新获取认证图像");
}
//判断活体值 腾讯云判断小于87分的不为活体 一般只要是自拍照 无美颜 没有遮挡的图片活体值都是95以上
if($res["Score"] < 85){
	return $this->setErrorData(40006,"验证失败,请重新获取认证图像");
}
//当前图像是活体,可以直接跟上自己的业务逻辑

在这里插入图片描述

创建人员库

//实例化一个证书对象,入参需要腾讯云账户secretId,secretKey
$cred = new Credential("", "");
// 实例化一个http选项
$httpProfile = new HttpProfile();
// 指定接入地域(默认就近接入)
$httpProfile->setEndpoint("iai.tencentcloudapi.com");
//实例化客户端
$clientProfile = new ClientProfile();
//配置http
$clientProfile->setHttpProfile($httpProfile);
//实例化人脸识别对象 第二个参数是地域参数
$client = new IaiClient($cred, "ap-chongqing", $clientProfile);
try {
	//在这之前一定要先获取当当前人脸使用的人员库名以及人员库ID 并添加到数据库 避免下次还会请求添加人员库
	//还要开启事务 避免腾讯云添加失败 但数据库已经记录
	//获取人体库请求对象
	$req = new CreateGroupRequest();
	//组装创建人体库所需参数
	$params = array(
		"GroupName" => $data["group_name"],
		"GroupId" => $data["group_id"],
	);
	//赋值json对象数据
	$req->fromJsonString(json_encode($params));
	//创建人员库
	$resp = $client->CreateGroup($req);
	//获取请求结果
	$res = $resp->toJsonString();
	//请求结果转数组
	$res = json_decode($res, true);
	//判断结果
	if(empty($res["FaceModelVersion"])){
		//事务回滚 数据库与腾讯云人员库同步
		$this->rollback();
		return $this->setErrorData(40005,"创建腾讯云人员库失败");
	}
	$this->commit();
}catch(TencentCloudSDKException $e) {
	$this->rollback();
	return $this->setErrorData(40006,$e->getMessage());
}
//人员库添加成功 跟上自己的业务逻辑

创建人员

//实例化一个证书对象,入参需要腾讯云账户secretId,secretKey
$cred = new Credential("", "");
// 实例化一个http选项
$httpProfile = new HttpProfile();
// 指定接入地域(默认就近接入)
$httpProfile->setEndpoint("iai.tencentcloudapi.com");
//实例化客户端
$clientProfile = new ClientProfile();
//配置http
$clientProfile->setHttpProfile($httpProfile);
//实例化人脸识别对象 第二个参数是地域参数
$client = new IaiClient($cred, "ap-chongqing", $clientProfile);
//获取创建人员对象
$req = new CreatePersonRequest();
//组装请求参数
$params = array(
	"GroupId" => "人员库ID",
	"PersonName" => "人员姓名",
	"PersonId" => "人员ID",//人员ID一定要保存到数据库 人员的后续操作都依赖于人员ID
	"Url" => $imgUrl,//图像信息
	"QualityControl" => 3,//图像要求等级
	"NeedRotateDetection" => 1,//是否旋转识别
);
//赋值json化数据
$req->fromJsonString(json_encode($params));
try {
	//创建人员
	$resp = $client->CreatePerson($req);
	//获取请求结果
	$res = $resp->toJsonString();
	//请求结果转数组
	$res = json_decode($res, true);
}catch(TencentCloudSDKException $e) {
	return $this->setErrorData(40006,$e->getMessage());
}
//判断FaceId是否为空 这一步判断是为了严谨一点
if(empty($res["FaceId"])){
	return $this->setErrorData(40005,"验证失败,当前认证图像有误,请刷新重试");
}
//人员添加成功 可根据自己的需要实现自己的业务逻辑

人员验证

通过人员ID和人脸图片判断是否为同一个人

//实例化一个证书对象,入参需要腾讯云账户secretId,secretKey
$cred = new Credential("", "");
// 实例化一个http选项
$httpProfile = new HttpProfile();
// 指定接入地域(默认就近接入)
$httpProfile->setEndpoint("iai.tencentcloudapi.com");
//实例化客户端
$clientProfile = new ClientProfile();
//配置http
$clientProfile->setHttpProfile($httpProfile);
//实例化人脸识别对象 第二个参数是地域参数
$client = new IaiClient($cred, "ap-chongqing", $clientProfile);
//人员验证对象
$req = new VerifyPersonRequest();
//组装请求参数
$params = array(
	"Url" => $imgUrl,//图像数据
	"PersonId" => $personId,//人员ID
	"QualityControl" => 3//图像等级
);
//赋值json化数据
$req->fromJsonString(json_encode($params));
try {
	//进行人员验证
	$resp = $client->VerifyPerson($req);
	//获取请求结果
	$res = $resp->toJsonString();
	//请求结果转数组
	$res = json_decode($res, true);
}catch(TencentCloudSDKException $e) {
	return $this->setErrorData(40006,$e->getMessage());
}
//判断结果
if(empty($res["IsMatch"]) || $res["IsMatch"] == false){
	return $this->setErrorData(40005,"验证失败,请账号拥有者验证");
}
//人员验证成功 当前人员ID和人脸是同一个人 可根据自己的需要实现自己的业务逻辑
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uniapp是一款基于Vue.js框架开发的跨平台应用开发框架,它可以将我们的Vue代码编译成不同平台的原生应用。而腾讯云人脸识别活体检测是一项用于识别人脸并验证其真实性的技术,可以用于安全认证、人脸支付等场景。 在Uniapp中对接腾讯云人脸识别活体检测,我们可以按以下步骤进行: 1. 注册并创建腾讯云账号,开通人脸识别服务,并获取到相关的API密钥和访问密钥。 2. 在Uniapp项目中引入相关的插件或,比如uni-app-faceid插件,该插件是为了方便Uniapp与腾讯云人脸识别服务进行交互而开发的。 3. 在Uniapp的页面中,使用插件提供的组件或方法,调用腾讯云人脸识别服务的接口,传递待识别的人脸图像数据。 4. 接收腾讯云人脸识别服务返回的结果,根据返回的结果判断活体检测是否通过。 需要注意的是,在使用腾讯云人脸识别活体检测时,我们需要保证传入的人脸图像质量较高,且能够满足腾讯云人脸识别服务的要求,例如需要清晰可见的人脸图像。 除了以上步骤,根据具体需求,我们还可以根据腾讯云人脸识别服务的其他功能,如人脸比对、人脸搜索等,进行更高级的功能扩展。 总之,Uniapp与腾讯云人脸识别活体检测的对接,需要通过引入插件或来实现与腾讯云交互,并根据返回结果判断活体检测是否通过。这样我们就可以在Uniapp项目中应用腾讯云人脸识别服务,实现更广泛的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值