PHP--调用百度人脸识别API获取人脸数据

一、登录百度智能云

地址在这里,没有注册的事先注册一下。

然后 “产品服务–人工智能–人脸识别”依次点击,进入人脸识别。(百度人脸识别接口的人脸检测、人脸对比、人脸搜索是可以免费使用的,个人账号QPS=2,企业认证之后QPS=10)

什么是QPS?
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准在这里插入图片描述

二、创建应用

1.点击“创建应用”,在这里插入图片描述
2.选择接口处,选择人脸识别(一班情况下,都是默认选好的),里面的基础服务都是默认自带的,不用管,填写好其他信息之后,点击立即创建即可。在这里插入图片描述
3.显示创建完毕页面,点击“返回应用列表”。在这里插入图片描述
4.在这里就可以看见刚刚创建的与应用了,要记得项目的API KeySecret Key在这里查看,这个之后是有用的在这里插入图片描述

到这里,准备工作就全部做完了!!!

三、Access Token的获取

请求URL数据格式:向服务地址https://aip.baidubce.com/oauth/2.0/token发送post请求,在URL中带上以下参数:

grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key
client_secret: 必须参数,应用的Secret Key
(获取的access_token有效期为30天,建议每次请求都重新生成一个access_token
代码如下(官方文档代码跑不通,所以有些许修改)

<?
function request_post_access($url = '', $param = '') {
    if (empty($url) || empty($param)) {
            return false;
    }
        
        $postUrl = $url;
        $curlPost = $param;
        $curl = curl_init();//初始化curl
        curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        $data = curl_exec($curl);//运行curl
        curl_close($curl);
        
        return $data;
}

$url = 'https://aip.baidubce.com/oauth/2.0/token?';
$post_data['grant_type']       = 'client_credentials';//固定值
$post_data['client_id']      = '换成应用的API key';//API Key
$post_data['client_secret'] = '换成应用的Secret Key';//Secret Key
$o = "";
foreach ( $post_data as $k => $v ) 
{
    $o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = json_decode(request_post_access($url, $post_data),'true');
var_dump($res['access_token']);//打印一下

四、人脸数据的获取

向服务地址https://aip.baidubce.com/rest/2.0/face/v3/detect发送post请求,在URL中带上access_token

请求参数:imageimage_type是必须的(详细参数看官方文档)
(image_type有三种形式,下面代码我将使用BASE64的作为演示)

返回结果:(以下是必返回,如果想要获取更多数据,比如:年龄、性别。表情、人种等,详细参数看官方文档)

字段说明
face_num检测到的图片中的人脸数量
face_list人脸信息列表,具体包含的参数参考下面的列表。
+face_token人脸图片的唯一标识
+location人脸在图片中的位置
++left人脸区域离左边界的距离
++top人脸区域离上边界的距离
++width人脸区域的宽度
++height人脸区域的高度
++rotation人脸框相对于竖直方向的顺时针旋转角,[-180,180]
+face_probability人脸置信度,范围【0~1】,代表这是一张人脸的概率,0最小、1最大。
+angel人脸旋转角度参数
++yaw维旋转之左右旋转角[-90(左), 90(右)]
++pitchdouble 三维旋转之俯仰角度[-90(上), 90(下)]
++rolldouble 平面内旋转角[-180(逆时针), 180(顺时针)]

代码如下:(事先在php文件下的同级目录存放一张人脸照片

<?php
//$file:图片地址
//Filetype: JPEG,PNG,GIF 

//获取文件对象,转换成base64,不要数据头
$file = "01.png"; 
if($fp = fopen($file,"rb", 0)) 
{ 
    $gambar = fread($fp,filesize($file)); 
    fclose($fp); 

     
    $base64 = chunk_split(base64_encode($gambar)); 
    // 输出
    $encode = '<img src="data:image/jpg/png/gif;base64,' . $base64 .'" >'; 
} 


//写入数据
$param=array(
    "image"=>$base64,
    "image_type"=>"BASE64",//图片类型
    // 去掉注释,在value里填写需要额外获取的人脸数据"face_field"=>"face_num,face_probability,location"//需要获取的数据项
);
//转换格式
$bodys=json_encode($param);


//获取access_token,每次获取一个,单个access_token有效时间只有30天
function request_post_access($url = '', $param = '') {
    if (empty($url) || empty($param)) {
            return false;
    }
        
        $postUrl = $url;
        $curlPost = $param;
        $curl = curl_init();//初始化curl
        curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        $data = curl_exec($curl);//运行curl
        curl_close($curl);
        
        return $data;
}

$url = 'https://aip.baidubce.com/oauth/2.0/token?';
$post_data['grant_type']       = 'client_credentials';//固定值
$post_data['client_id']      = '换成应用的API Key';//API Key
$post_data['client_secret'] = '换成应用的Secret Key';//Secret Key
$o = "";
foreach ( $post_data as $k => $v ) 
{
    $o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = json_decode(request_post_access($url, $post_data),'true');

/**
 * 发起http post请求(REST API), 并获取REST请求的结果
 * @param string $url
 * @param string $param
 * @return - http response body if succeeds, else false.
 */
function request_post($url = '', $param = '')
{
    if (empty($url) || empty($param)) {
        return false;
    }

    $postUrl = $url;
    $curlPost = $param;
    // 初始化curl
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $postUrl);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 要求结果为字符串且输出到屏幕上
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    // post提交方式
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    // 运行curl
    $data = curl_exec($curl);
    curl_close($curl);

    return $data;
}


$token = $res['access_token'];

$url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' . $token;
$res = json_decode(request_post($url, $bodys),'true');

var_dump($res);

搞定了

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值