微信小程序实现人脸检测功能
本文为大家分享了微信小程序实现人脸检测的具体代码,供大家参考,具体内容如下
因为本文章的人脸检测技术运用的是百度云人工智能,首先要有百度云的账号。
近期,人脸识别已经升级到了V3,开启了测试,所以也依照v3文档进行了更新;
1、人脸识别的每个接口,都需要用到百度云的access_token,首先获取access-token,一个月之后access_token过期;可以将获取的存入文件,再次引用时可以判断其是否过期,然后引用或者重新获取:
//获取access_token functionrequest_post($url='',$param=''){ if(empty($url)||empty($param)){ returnfalse; } $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); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE); curl_setopt($curl,CURLOPT_SSLVERSION,1); $data=curl_exec($curl);//运行curl curl_close($curl); return$data; } functionaccess_token(){ $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']='client_credentials'; $post_data['client_id']='fRuY7eOPxBzIHf4qxiYeQOHT'; $post_data['client_secret']='oe7L7aPc5rcKfSewvb5h6xFX2a8dEQN1'; $o=""; foreach($post_dataas$k=>$v) { $o.="$k=".urlencode($v)."&"; } $post_data=substr($o,0,-1); $res=request_post($url,$post_data); $arr=json_decode($res,true); if(isset($arr['access_token'])&&isset($arr['expires_in'])){ $data['access_token']=$arr['access_token']; $data['totime']=time()+$arr['expires_in']-86400; file_put_contents($file,json_encode($data)); return$arr['access_token']; }else{ returnfalse; } }
2、创建初始化方法,需要用到Secret_Key、API_Key、App_ID,为用户基本资料;
privatefunctioninit_face(){ $App_ID='用户appid'; $API_Key='用户api_key'; $Secret_Key='用户secret_key'; $dir=APP_PATH.'/face-sdk/'; require_once$dir."AipFace.php"; returnnew\AipFace($App_ID,$API_Key,$Secret_Key); }
(thinkPHP框架)
将所需检测图片放入文件;具体参数可依照百度云人脸识别v3文档查看。
//人脸检测 publicfunctionfacevalid(){ $file='./Upload/2018-05-17/1.png'; if(!file_exists($file)){ die('文件不存在!'); } $image=base64_encode(file_get_contents($file)); $imageType='BASE64'; //如果有可选参数 $options=array(); $options['max_face_num']=2; $client=$this->init_face(); $ret=$client->detect($image,$imageType,$options); //print_r($ret); if($ret['error_code']==0){//有人脸 $result=$ret['result']; $face_num=$result['face_num']; if($face_num==1){//人脸数量为1 $face_probability=$result['face_list'][0]['face_probability']; if($face_probability==1){//可靠性为1 $user_id=myguid(); $group_id=$this->face_group(); $res=$client->addUser($image,'BASE64',$group_id,$user_id); //print_r($res); if($res['error_code']==0){ echo"人脸检测完成,并入库"; } }else{ die('可靠性为:'.$face_probability); } }else{ die('人脸数大于1'); } }else{ die('没有人脸'); } } //获取组 privatefunctionface_group(){ $groupname='10001'; $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{ returnfalse; } } }else{ returnfalse; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。