<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                我們所安裝的攝像頭必須支持`ftp`文件上傳功能。然后將ftp地址指向系統`/cronjob/ftp/`目錄下對應的門店文件夾內。當我們配置服務器地址的時候會自動生成店鋪id多對應的文件夾,然后將生成的圖片處理保存到`/public/upload/avatar`目錄下。如圖所對應的文件名即為所對應的店鋪信息: ![](https://box.kancloud.cn/efb9396e7fc1bb4478de76c578a1534b_166x156.png) 下面介紹一下如何針對接入攝像頭進行處理: >[info]系統通過不斷地訪問cronjob/init.php文件執行以下四個步驟,從而完成攝像頭的捕獲與處理功能 1.通過`step1.php`文件將攝像頭捕捉到的頭像信息上傳到我們的`/ftp/`所對應的目錄下,通過以下代碼進行上傳: ~~~ file_put_contents($lock_f, date('Y-m-d H:i:s')); $dir = __DIR__.'/ftp'; $list = glob($dir.'/*'); $exp = ['.','..','.git','.svn','.bash_logout']; foreach($list as $deep){ $v = substr($deep,strrpos($deep,'/')+1); //set outer_id set_face_outer_id($v); if(!is_dir($deep)) continue; $li = glob($deep.'/*.jpg'); foreach($li as $file_path){ $vo = substr($file_path,strrpos($file_path,'/')+1); // echo $file_path."\n".$vo;exit; if(in_array($vo,$exp)) continue; //讀到對應的文件了。 //必須是圖片,其他的不要。 $ext = strtolower(substr($vo,strrpos($vo,'.')+1)); //這不是靜態圖片的不要 if(!in_array($ext,['jpg','jpeg','png'])) continue; //找出圖片中的人臉圖 // $file_path = $dir."/".$v."/".$vo; file_put_contents(__DIR__.'/lock/1_image',$file_path); face_avatar($file_path , $v); } } unlink($lock_f); ~~~ 2.通過`step2.php`文件設置我們的圖片庫: ~~~ if($all){ foreach($all as $v){ $face_token = $v['face_token']; $id = $v['id']; $flag = false; $outer_id = $v['outer_id']; if($v['closed_token']) { file_put_contents(__DIR__."/lock/step2",$id); $db->update('face_avatar',['is_mark'=>1,'status'=>2],['id'=>$id]); continue; } $ret = face_api_search($face_token , $outer_id ); if($ret->error_message){ //沒找到對應的outer_id,說明從來沒有設置過, //設置一下。同時,這個face_token直接入庫吧 if($ret->error_message == "INVALID_OUTER_ID"){ face_set($face_token,$outer_id); //狀態修改為正常的,需要發送給其他接口的 $db->update('face_avatar',['is_mark'=>1,'status'=>1],['id'=>$id]); }elseif($ret->error_message == 'CONCURRENCY_LIMIT_EXCEEDED'){ file_put_contents(__DIR__."/lock/api_error_CONCURRENCY_LIMIT_EXCEEDED",date('Y-m-d H:i:s')); continue; }else{ file_put_contents(__DIR__."/lock/api_error_stopall",var_export($ret,true)); } continue; } //如果已經存在outerid那么,查找相似的人臉吧 if($ret->results){ foreach($ret->results as $v){ //排除本人的face_token //然后比較最有可能是同一個人的情況 //大于80為疑似同一個人 $ft = $v->face_token; if( $ft != $face_token && $v->confidence > 80 ){ $flag = true; $current = $ft; break; } } } //在人臉接口中找到了疑似同一個人的信息 if($flag === true){ //與當前查找的人的識別碼一樣的話,狀態標識為1,其他的為2,2的數據是需要后面刪除的。 if($face_token == $current){ $db->update('face_avatar',['is_mark'=>1,'status'=>1],['id'=>$id]); }else{ //與數據庫中存在的用戶是同一個人 $db->update('face_avatar',['closed_token'=>$current,'status'=>2],['id'=>$id]); } }else{ //找不到,添加 face //寫入庫 $db->update('face_avatar',['is_mark'=>1,'status'=>1],['id'=>$id]); face_add($outer_id,$face_token); } } } ~~~ 3.圖片庫創建好之后就是對圖片庫進行處理,清楚無用的圖片或者重復的圖片信息: ~~~ foreach($all as $v){ $face_token = $v['face_token']; $avatar = $v['avatar']; $id = $v['id']; $closed_token = $v['closed_token']; $ltime = $v['ltime']; $sended = $v['sended']; //存在相關聯的字段 //查找這個TOKEN對應的ID, $one = $db->get('face_avatar',"*",['face_token'=> $closed_token,"is_mark"=>1 ]); if($one){ $new_id = $one['id']; //在一定時間時間內,不要重復提醒為新客戶 if($one['ltime']+ $check_lastime > time() ){ file_put_contents(__DIR__.'/lock/step3_error2',$tts['ltime']." ".$check_lastime); }else{ //作為新客戶來操作 if( $one['sended'] != 2){ $fg = true; $db->update("face_avatar",['sended'=>0,"status"=>1,'ltime'=>time()],['id'=>$new_id]); file_put_contents(__DIR__."/lock/1_update.log",$new_id."--".$v['id']); } } $db->update('face_avatar',['status'=> 3 ],['id'=>$id]); //已經存在關聯的,這個是要刪除的。 //@unlink(__DIR__.'/'.$avatar); }else{ file_put_contents(__DIR__.'/lock/error_step3',1); } file_put_contents(__DIR__."/lock/step3_newid.log",$new_id); //在一定時間內,用戶不要再創建新的token. if( $face_relative_lt + $ltime > time() ){ echo "<br>too many pics- ".$v['avatar']."<br>"; } else{ $rt1 = $db->select('face_avatar_token',"*",[ 'avatar_id'=>$id, 'face_token'=>$closed_token, ]); if(!$rt1){ $db->insert("face_avatar_token",[ 'face_token'=>$closed_token, 'avatar_id'=>$id, 'avatar' => $avatar, 'created' => time(), ]); } } } ~~~ 4.然后針對本店員工的進出門店進行判斷處理客戶與服務人員: ~~~ if($all){ foreach ($all as $v) { $face_token = $v['face_token']; $id = $v['id']; $outer_id = set_face_outer_id($v['dir']); $ret = face_api_search($face_token , $outer_id ); file_put_contents(__DIR__.'/lock/4_ret',var_export($ret,true)); if($ret->error_message){ continue; } file_put_contents(__DIR__.'/lock/4_ret_results',var_export($ret->results,true)); if($ret->results){ foreach($ret->results as $v){ //排除本人的face_token //然后比較最有可能是同一個人的情況 //大于80為疑似同一個人 $ft = $v->face_token; if( $ft != $face_token && $v->confidence > 80 ){ $flag = true; $current = $ft; break; } } } file_put_contents(__DIR__.'/lock/4_ret_current',$current ); if($current){ $db->update('face_exclude',['closed_token'=>$current] , ['id'=>$id] ); } } } ~~~ 5.有時候我們會針對所捕獲的圖片進行處理或者圖片質量的要求,那么我們可以在`comm.php`文件內設置,具體代碼如下,當我們注釋的時候代表不進行該處理操作: ~~~ //不清晰的照片不要了。是否模糊 /*if($v->attributes->blur->blurness->value > 2){ echo 'not good qulity<br>'; file_put_contents(__DIR__.'/lock/step1_no_qulity',$v->attributes->blur->blurness->value); continue; } //人臉質量 if($v->attributes->facequality->value < 20){ echo 'not good qulity 2<br>'; file_put_contents(__DIR__.'/lock/step1_no_good',$v->attributes->facequality->value); continue; } */ ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看