本文中简单测试使用了百度云人脸识别中的 "创建用户组","注册人脸","人脸搜索"
语言: PHP
框架: ThinkPHP 5
百度云人脸识别官方文档: 人脸搜索与库管理 - 人脸识别_人脸检测_人脸对比_人脸搜索_活体检测_百度智能云
1.使用 AK,SK 生成鉴权签名(Access Token)
/**
* 使用 AK,SK 生成鉴权签名(Access Token)
* @return string 鉴权签名信息(Access Token)
*/
private function getAccessToken(){
$curl = curl_init();
$postData = array(
'grant_type' => 'client_credentials',
'client_id' => '你的 API Key',
'client_secret' => '你的 Secret Key'
);
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query($postData)
));
$response = curl_exec($curl);
curl_close($curl);
$rtn = json_decode($response);
return $rtn->access_token;
}
注意:
access_token
的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新 token;
2. 创建一个空的用户组
- URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add
- URL参数: access_token
- 传参 : group_id 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。
/**
* 创建用户组
* URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add
* URL参数: access_token
* 传参 : group_id 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。
*/
public function getFaceGroupAdd() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add?access_token={$this->getAccessToken()}",
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{"group_id":"1"}', // 用户组id,标识一组用户(由数字、字母、下划线组成)
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
3. 人脸注册
- URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add
- URL参数: access_token
- 传参 :
- image 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断
- image_type 图片类型
- BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
- URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
- FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
- group_id 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。
- user_id 用户id(由数字、字母、下划线组成),长度限制48B
/**
* 人脸注册
* URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add
* URL参数: access_token
* 传参 : image 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断。
* 传参 : image_type 图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
* 传参 : group_id 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。
* 传参 : user_id 用户id(由数字、字母、下划线组成),长度限制48B
*/
public function getFaceUserAdd() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token={$this->getAccessToken()}",
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{"group_id":"1","image":"你的图片的Url地址","image_type":"URL","user_id":"5"}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
注: 组内每个uid下的人脸图片数目上限为20张
人脸注册完毕后,生效时间一般为5s以内,之后便可以进行人脸搜索或认证操作。
4. 人脸搜索
- URL: https://aip.baidubce.com/rest/2.0/face/v3/search
- URL参数: access_token
- 传参
- image 图片信息,图片上传方式根据image_type来判断,为base64时,编码后图片大小不超过2M
- image_type 图片类型
- BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;
- URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);
- FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
- group_id_list 从指定的group中进行查找 用逗号分隔,上限10个
/**
* 人脸注册
* URL: https://aip.baidubce.com/rest/2.0/face/v3/search
* URL参数: access_token
* 传参 : image 图片信息,图片上传方式根据image_type来判断,为base64时,编码后图片大小不超过2M
* 传参 : image_type 图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M;URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长);FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
* 传参 : group_id_list 从指定的group中进行查找 用逗号分隔,上限10个
*/
public function getSearch()
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://aip.baidubce.com/rest/2.0/face/v3/search?access_token={$this->getAccessToken()}",
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{"group_id_list":"1","image":"你的图片的Url地址","image_type":"URL","max_user_num":10}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
结束 .
说明:
就像标题所写,此文章只是记录了PHP使用百度云的人脸识别中的人脸库人脸对比的简单步骤,所以未进行代码优化,请见谅
具体详细的请求参数,返回参数,代码实例 请移步 百度云人脸识别 - 官方文档