<pre date-time='sbrzp2k'></pre>

    <center id='1f3lgi4'><details dropzone='f6nmgi'></details></center>

  1. <blockquote id='q0g1hpu'></blockquote>
    <i date-time='9v8vic'></i>
    <big date-time='r0031kq'></big>
            <em draggable='orwsmmg8'><abbr id='3eq2ss0s'></abbr></em>

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

            日期:2019-07-29 10:44 by admin 1480 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共享的五種方法


            評論

            -->