<small date-time='j0j42x19'><ii dir='iq9q8x4'></ii></small>
                <datalist id='ybuxbuvh'></datalist>
                <sub draggable='6tgrvg'><kbd dropzone='aded4fs'></kbd></sub>
                <legend draggable='jm3pcxs'><big dir='9phbq6ja'></big></legend>
                1. <font lang='oe2y0k6p'></font>

                2. 文章熱詞:php,百度API,人臉識别

                  日期:2019-07-29 10:44 by 楊國偉 1187 0 收藏
                  我要分享

                  摘要:php使用百度API實現人臉識别

                  1.注冊百度開發者賬号。

                  https://login.bce.baidu.com/?account= 注冊登錄成功後,進入控制台,在左邊的導航欄找到産品-》人工智能-》人臉識别:

                  640.jpg

                  創建應用。創建應用成功後拿到應用的API Key和Secret Key

                  2.接口調用-獲取access token

                  調用人臉識别接口前需要獲取access token,示例代碼:

                  function execCurl($url, $param) {
                   if (empty($url) || empty($param)) {
                    return array(result => false, err_msg => url or param is null);
                   }
                   $curl = curl_init();//初始化curl
                   curl_setopt($curl, CURLOPT_URL, $url);//抓取指定網頁
                   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, $param);
                   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
                   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
                   $data = curl_exec($curl);//運行curl
                   $curl_err_msg = curl_error($curl);
                   curl_close($curl);
                   if($data === false) {
                    return array(result => false, err_msg => $curl_err_msg);
                   }else {
                    return array(result => true, data => $data);
                   }
                  }
                  $url = https://aip.baidubce.com/oauth/2.0/token;
                  $param = array(
                   grant_type => client_credentials,
                   client_id => 你的API Key,
                   client_secret => 你的Secret Key
                  );
                  $result = execCurl($url, $param);

                  3.調用人臉檢查接口

                  如果需要判斷一張圖片中的人臉,是否符合後續識别或者對比的條件,在請求時在face_field參數中請求quality。

                  下面示例是請求圖文爲base64轉碼字符串(轉碼不能包含頭信息),也可以傳圖片網絡地址,官方文檔:https://ai.baidu.com/docs#/Face-Detect-V3/top

                  示例代碼:

                  function checkPictureToCheckFace($image_path, $access_token) {
                   $url = https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token= . $access_token;
                   $param = array(
                    image => base64EncodeImage($image_path),
                    image_type => BASE64,
                    face_field => quality
                   );
                   $param = json_encode($param);
                   $result = execCurl($url, $param);
                   if($result[result] == false) return $result;
                   $data = json_decode($result[data], true);
                   if($data[error_code] != 0) return array(result => false, err_msg => 上傳的人臉不符合要求,請重新上傳五官清晰的真實頭像);
                   $err_result = array(result => false, err_msg => 上傳的人臉不符合要求,請重新上傳五官清晰的真實頭像!);
                   $quality = $data[result][face_list][0][quality];
                   if($quality[occlusion][left_eye] > 0.6) return $err_result; // 左眼被遮擋的阈值
                   if($quality[occlusion][right_eye] > 0.6) return $err_result; // 右眼被遮擋的阈值
                   if($quality[occlusion][nose] > 0.7) return $err_result; // 鼻子被遮擋的阈值
                   if($quality[occlusion][mouth] > 0.7) return $err_result; // 嘴巴被遮擋的阈值
                   if($quality[occlusion][left_cheek] > 0.8) return $err_result; // 左臉頰被遮擋的阈值
                   if($quality[occlusion][right_cheek] > 0.8) return $err_result; // 右臉頰被遮擋的阈值
                   if($quality[occlusion][chin_contour] > 0.6) return $err_result; // 下巴被遮擋阈值
                   if($quality[blur] != 0 && $quality[blur] > 0.7) return $err_result; // 模糊度範圍 0是最清晰,1是最模糊
                   if($quality[illumination] < 40) return $err_result; // 光照範圍 
                   if($quality[completeness] == 0) return $err_result; // 人臉完整度 0爲人臉溢出圖像邊界,1爲人臉都在圖像邊界内
                   return array(result => true);
                  }
                  function execCurl($url, $param) {
                   if (empty($url) || empty($param)) {
                    return array(result => false, err_msg => url or param is null);
                   }
                   $curl = curl_init();//初始化curl
                   curl_setopt($curl, CURLOPT_URL, $url);//抓取指定網頁
                   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, $param);
                   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
                   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
                   $data = curl_exec($curl);//運行curl
                   $curl_err_msg = curl_error($curl);
                   curl_close($curl);
                   if($data === false) {
                    return array(result => false, err_msg => $curl_err_msg);
                   }else {
                    return array(result => true, data => $data);
                   }
                  }
                  function base64EncodeImage($image_path) {
                   $base64_image = ;
                   $image_info = getimagesize($image_path);
                   $image_data = fread(fopen($image_path, r), filesize($image_path));
                   $base64_image = chunk_split(base64_encode($image_data));
                   return $base64_image;
                  }
                  $image_path = image/1.jpg;
                  $access_token = 上一步的獲取access token;
                  $result = checkPictureToCheckFace($image_path, $access_token);

                  判斷是否符合人臉識别檢查的字段說明:

                  640 (1).jpg

                  上一篇:排隊叫号,前10名顯示在屏幕上,用PHP如何實現

                  下一篇:分布式系統中Session共享的五種方法


                  評論