PHP实现微信小程序人脸识别刷脸登录功能

PHP实现微信小程序人脸识别刷脸登录功能

首先我们先确认我们的百度云人脸库里已经上传了我们的个人信息照片

然后我们在后台写刷脸登陆的接口login我们要把拍照获取的照片存储到服务器

public function login(){ 
   // 上传文件路径 
   $dir = "./Uploads/temp/"; 
   if(!file_exists($dir)){ 
    mkdir($dir,0777,true); 
   } 
   $upload = new \Think\Upload(); 
   $upload->maxSize = 2048000 ;// 设置附件上传大小 
   $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 
   $upload->savepath = ''; 
   $upload->autoSub = false; 
   $upload->rootPath = $dir; // 设置附件上传根目录 
   // 上传单个文件 
   $info = $upload->uploadOne($_FILES['file']); 
   if(!$info) { // 上传错误提示错误信息 
     echo json_encode(array('error'=>true,'msg'=>$upload->getError()),JSON_UNESCAPED_UNICODE); 
   }else{ // 上传成功 获取上传文件信息 
    $file = $dir . $info['savepath'].$info['savename']; 
    $image = base64_encode(file_get_contents($file)); 
    $client = $this->init_face(); 
    $options['liveness_control'] = 'NORMAL'; 
    $options['max_user_num'] = '1'; 
    $ret = $client->search($image,'BASE64','student',$options); 
    // echo json_encode($ret,JSON_UNESCAPED_UNICODE); 
    // exit; 
    if($ret['error_code']==0){ 
     $user = $ret['result']['user_list'][0]; 
     $no = $user['user_id']; 
     $score = $user['score']; 
     if($score>=95){ 
      $data = M('student')->where("no = '{$no}'")->find(); 
      $data['score'] = $score; 
      // $data['name'] = json_decode($data['name'],true); 
      // $data['sex'] = json_decode($data['sex'],true); 
      echo '识别成功' . json_encode($data,JSON_UNESCAPED_UNICODE); 
     }else{ 
      echo '识别失败' . $data['score']; 
     } 
    } 
   } 
  }

 

然后进行前台设计

<camera device-position="{
       {device?'back':'front'}}" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera> 
    <view class="weui-cells__title" >开关</view> 
    <view class="weui-cells weui-cells_after-title"> 
      <view class="weui-cell weui-cell_switch"> 
        <view class="weui-cell__bd">切换摄像头</view> 
        <view class="weui-cell__ft" > 
          <switch bindtap="devicePosition" /> 
        </view> 
      </view> 
    </view> 
<button type="primary" bindtap="takePhoto">刷脸登录</button>

 

我们还可以控制相机的前后镜头

devicePosition() { 
this.setData({ 
 device: !this.data.device, 
}) 
console.log("当前相机摄像头为:", this.data.device ? "后置" : "前置"); 
camera() { 
 let { ctx, type, startRecord } = this.data; }, 
data: { 
 src: null, 
},

 

在js里面调用接口

takePhoto() { 
   const ctx = wx.createCameraContext() 
   ctx.takePhoto({ 
    quality: 'high', 
    success: (res) => { 
     this.setData({ 
      src: res.tempImagePath 
     }) 
     console.log(res) 
     wx.uploadFile({ 
      url: '', //仅为示例,非真实的接口地址 
      filePath: this.data.src, 
      name: 'file', 
      formData: { 
      }, 
      success: function (res) { 
       // var data = res.data 
       // var json = JSON.parse(data) 
       console.log(res) 
       wx.showModal({ 
        title: "提示", 
        content: res.data, 
        showCancel: false, 
        confirmText: "确定"
       }) 
      } 
     }) 
    } 
   }) 
  },

刷脸登录就成功了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113179.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Latex之数学公式基本使用格式「建议收藏」

    Latex之数学公式基本使用格式「建议收藏」Latex之数学公式基本使用格式一.数学公式格式背景介绍TEX有两种数学公式,一种是夹杂在行文段落中的公式,一般称为行内(inline)数学公式,或正文(in-tex:t)数学公式;另一种就是像单独占据整行居中展示出来的,称为显示(displayed)数学公式(或行间公式、列表公式),显示数学环境更适合表现更复杂的数学内容。两种公式使用不同的方式进入数学模式。在TEX中,行内数学公式一…

    2022年5月11日
  • 5G/NR SSB学习总结[通俗易懂]

    5G/NR SSB学习总结[通俗易懂]6.1SSB概念同步信号和PBCH块(SynchronizationSignalandPBCHblock,简称SSB),它由主同步信号(PrimarySynchronizationSignals,简称PSS)、辅同步信号(SecondarySynchronizationSignals,简称SSS)、PBCH三部分共同组成。6.2SSB特征…

    2022年6月30日
  • TensorFlow2迁移学习实战(九):搭建残差网络ResNet-101,实现对花的精准分类

    TensorFlow2迁移学习实战(九):搭建残差网络ResNet-101,实现对花的精准分类快速训练残差网络ResNet-101,完成图像分类与预测,精度高达98%!

    2022年10月7日
  • 第一次博客作业

    第一次博客作业

    2021年10月6日
  • 如何删除LDSGameMaster[通俗易懂]

    如何删除LDSGameMaster[通俗易懂]如何删除LDSGameMaster背景介绍方法一方法二背景介绍最近不小心下载安装了鲁大师,卸载之后,C盘中仍有一个名为LDSGameMaster的文件夹。虽然很小,之后18M,但是一定要删除掉,否则心里很不舒服。方法一百度告诉我,解决这个问题很简单。这个文件夹中有个uninstall,运行之后就没有了。但我没有发现我的文件夹中有这么一个东西。这个方法不提。方法二删除之后,提示:操作无法…

    2022年6月13日
  • JVM异常FGC问题查找过程总结

    JVM异常FGC问题查找过程总结问题现象及分析可能原因分析手动重现异常大对象问题流量暴涨CPU资源被其他进程占用内存被其他进程占用的情况swap分区问题数据库连接异常堆文件分析shell脚本JVM问题排查总结其他遗留的问题前段时间线上的zzuser的服务模块出现大量的异常FGC情况,经过大量排查工作,最后锁定是因为一个sql的大查询导致的。这也给了我非常大的教训,同时我在这次问题的排查过程中也获益匪浅,

    2022年6月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号