PHP 百度云人脸识别的简单调用

本文中简单测试使用了百度云人脸识别中的 "创建用户组","注册人脸","人脸搜索"

语言: 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使用百度云的人脸识别中的人脸库人脸对比的简单步骤,所以未进行代码优化,请见谅

        具体详细的请求参数,返回参数,代码实例 请移步 百度云人脸识别 - 官方文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一一一凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值