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


Posted in Javascript onMay 25, 2018

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

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

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

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

//获取access_token 
function request_post($url = '', $param = '') { 
  if (empty($url) || empty($param)) { 
    return false; 
  } 
   
  $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; 
} 
 
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,为用户基本资料;

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

(thinkPHP框架)

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

// 人脸检测 
public function facevalid(){ 
    $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('没有人脸'); 
    } 
 
  } 
  // 获取组 
  private function face_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{ 
          return false; 
        } 
      } 
    }else{ 
      return false; 
    } 
}

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

Javascript 相关文章推荐
jQuery入门第一课 jQuery选择符
Mar 14 Javascript
理解Javascript_02_理解undefined和null
Oct 11 Javascript
javascript定时保存表单数据的代码
Mar 17 Javascript
使用node.js 制作网站前台后台
Nov 13 Javascript
jQuery实现宽屏图片轮播实例教程
Nov 24 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
Dec 04 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
3分钟读懂移动端rem使用方法(推荐)
May 06 Javascript
微信小程序如何刷新当前界面的实现方法
Jun 07 Javascript
微信小程序实现人脸识别
May 25 #Javascript
微信小程序实现刷脸登录
May 25 #Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
May 25 #Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 #Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 #Javascript
Webpack中雪碧图插件使用详解
May 25 #Javascript
使用javascript做在线算法编程
May 25 #Javascript
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
利用PHP动态生成VRML网页
2006/10/09 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
CURL状态码列表(详细)
2013/06/27 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
如何在PHP中读写文件
2020/09/07 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
python进行两个表格对比的方法
2018/06/27 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
怎样写演讲稿
2014/01/04 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
希特勒的演讲稿
2014/05/23 职场文书
计生工作先进事迹
2014/08/15 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
入党函调证明材料
2014/12/24 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS