人脸检测V3对于PHP开发者相比于V2简洁了不少,V2玩家则会写比较多的代码 去执行接口和获取accsee_token,
function https_request($url = '', $param = '')
{
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $postUrl);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALES);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
curl_setopt($curl, CURLOPT_SSLVERSION,1);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
function access_token(){
// $client_id = 'gScSGaz6lFwXfE30mj0vkHMv';
// $client_secret = 'D6U6YIW6FL33NGvGsQelFhEREoBvBt8R';
$file = __DIR__ .'\access_token';
if(file_exists($file)){
$str =file_get_contents($file);
try{
$arr = json_decode($str,true);
if (is_array($arr)) {
$totime = $arr['totime'];
if ($totime>time()) {
return $arr['access_token'];
exit;
}
}
}catch(Exception $e){
}
}
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$post_data['grant_type'] = 'x';
$post_data['client_id'] = 'v';
$post_data['client_secret'] = 'R';
$o = "";
foreach ( $post_data as $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = https_request($url, $post_data);
$arr = json_decode($res,true);
if (isset($arr['access_token']) && isset($arr['expires_in'])) {
$data['access_token'] = $arr['access_token'];
$data['expires_in'] = time()+$arr['expires_in']-3600;
file_put_contents($file, json_encode($data));
return $arr['access_token'];
}else{
return false;
}
而V3里的插件有很多的接口可以供我们调用:https://ai.baidu.com/sdk#bfr 。可以去下载看看
接下来就是上传好图片并获取到图片路径执行下面代码就可以获取到图片的信息和入库了
public function facevalid(){
$file = './Uploads/2018-05-20/5b015a6f96c41.jpeg';
if(!file_exists($file)){
die('文件不存在');
}
$image = file_get_contents($file);
$image = base64_encode($image);
$options = array();
$options['max_face_num'] = 2;
$client = $this->init_face();
$ret = $client->detect($image,'BASE64',$options);
print_r($ret);
if($ret['error_code']==0){//有人脸
$result = $ret['result'];
$face_num = $result['face_num'];
if(1==$face_num){//人脸数目为1
$face_probability = $result['face_list'][0]['face_probability'];
if(1==$face_probability){//可靠性为1
$guid = myguid();
$group = $this->face_group();
$client->addUser($image,'BASE64',$group,$guid);
echo '人脸检测完成,并已入库';
}else{
die('可靠性为:' . $face_probability);
}
}else{
die('人脸数量大于1');
}
}
}
public function face_group(){
$groupname = 'student';
$client = $this->init_face();
$ret = $client->getGroupList();
if($ret['error_code']==0){
$grouplist = $ret['result']['group_id_list'];
if(in_array($groupname, $grouplist)){
return $groupname;
}else{
$ret = $client->groupAdd($groupname);
if($ret['error_code']==0){
return $groupname;
}else{
return false;
}
}
}else{
return false;
}
}
最近正在学习人脸检测,希望能带给你灵感和方便