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


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 相关文章推荐
javascript中字符串拼接需注意的问题
Jul 13 Javascript
THREE.JS入门教程(3)着色器-下
Jan 24 Javascript
JavaScript淡入淡出渐变简单实例
Aug 06 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
webpack-url-loader 解决项目中图片打包路径问题
Feb 15 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
Element Breadcrumb 面包屑的使用方法
Jul 26 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 Javascript
JavaScript实现雪花飘落效果
Dec 27 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
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php解析json数据实例
2014/08/19 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
js显示时间 js显示最后修改时间
2013/01/02 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
详解Python3.1版本带来的核心变化
2015/04/07 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
关于礼仪的演讲稿
2014/01/04 职场文书
自我鉴定标准格式
2014/03/19 职场文书
党性教育心得体会
2014/09/03 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2014年终工作总结范本
2014/12/15 职场文书
关于倡议书的范文
2015/04/29 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS