当前位置:Gxlcms > JavaScript > 微信小程序实现人脸检测功能

微信小程序实现人脸检测功能

时间:2021-07-01 10:21:17 帮助过:105人阅读

本文为大家分享了微信小程序实现人脸检测的具体代码,供大家参考,具体内容如下

因为本文章的人脸检测技术运用的是百度云人工智能,首先要有百度云的账号。

近期,人脸识别已经升级到了V3,开启了测试,所以也依照v3文档进行了更新;

1、人脸识别的每个接口,都需要用到百度云的access_token,首先获取 access-token ,一个月之后access_token过期;可以将获取的存入文件,再次引用时可以判断其是否过期,然后引用或者重新获取:

  1. //获取access_token
  2. function request_post($url = '', $param = '') {
  3. if (empty($url) || empty($param)) {
  4. return false;
  5. }
  6. $postUrl = $url;
  7. $curlPost = $param;
  8. $curl = curl_init();//初始化curl
  9. curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
  10. curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
  11. 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; } function access_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_data as $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{ return false; } }

2、创建初始化方法,需要用到 Secret_Key、API_Key、App_ID,为用户基本资料;

  1. private function init_face(){
  2. $App_ID = '用户appid';
  3. $API_Key = '用户api_key';
  4. $Secret_Key = '用户secret_key';
  5. $dir = APP_PATH.'/face-sdk/';
  6. require_once $dir."AipFace.php";
  7. return new \AipFace($App_ID, $API_Key, $Secret_Key);
  8. }

(thinkPHP框架)

将所需检测图片放入文件;具体参数可依照百度云人脸识别v3文档查看。

  1. // 人脸检测
  2. public function facevalid(){
  3. $file = './Upload/2018-05-17/1.png';
  4. if (!file_exists($file)) {
  5. die('文件不存在!');
  6. }
  7. $image = base64_encode(file_get_contents($file));
  8. $imageType = 'BASE64';
  9. //如果有可选参数
  10. $options = array();
  11. $options['max_face_num'] = 2;
  12. $client = $this->init_face();
  13. $ret = $client->detect($image,$imageType,$options);
  14. // print_r($ret);
  15. if ($ret['error_code'] == 0) {//有人脸
  16. $result = $ret['result'];
  17. $face_num = $result['face_num'];
  18. if ($face_num==1) { //人脸数量为1
  19. $face_probability = $result['face_list'][0]['face_probability'];
  20. if ($face_probability==1) { //可靠性为1
  21. $user_id = myguid();
  22. $group_id = $this->face_group();
  23. $res = $client->addUser($image,'BASE64',$group_id,$user_id);
  24. // print_r($res);
  25. if ($res['error_code']==0) {
  26. echo "人脸检测完成,并入库";
  27. }
  28. }else{
  29. die('可靠性为:'.$face_probability);
  30. }
  31. }else{
  32. die('人脸数大于1');
  33. }
  34. }else{
  35. die('没有人脸');
  36. }
  37. }
  38. // 获取组
  39. private function face_group(){
  40. $groupname = '10001';
  41. $client = $this->init_face();
  42. $ret = $client->getGroupList();
  43. if ($ret['error_code'] == 0) {
  44. $grouplist = $ret['result']['group_id_list'];
  45. if (in_array($groupname, $grouplist)) {
  46. return $groupname;
  47. }else{
  48. $ret = $client->groupAdd($groupname);
  49. if ($ret['error_code'] == 0) {
  50. return $groupname;
  51. }else{
  52. return false;
  53. }
  54. }
  55. }else{
  56. return false;
  57. }
  58. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行