Maison >développement back-end >tutoriel php >PHP implémente la fonction de reconnaissance faciale et de connexion par balayage facial de l'applet WeChat
Cet article vous explique comment implémenter la fonction de connexion par reconnaissance faciale de l'applet WeChat basée sur PHP à travers un exemple de code. Les amis intéressés peuvent apprendre ensemble
Tout d'abord, confirmons notre base de données de visages Baidu Cloud que nous avons. Nous avons téléchargé nos photos d'informations personnelles
puis nous écrivons l'interface de connexion faciale en arrière-plan pour nous connecter. Nous devons stocker les photos obtenues en prenant des photos sur le serveur
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']; } } } }
Ensuite, faites la conception frontale
<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>
Nous pouvons également contrôler les objectifs avant et arrière de la caméra
devicePosition() { this.setData({ device: !this.data.device, }) console.log("当前相机摄像头为:", this.data.device ? "后置" : "前置"); camera() { let { ctx, type, startRecord } = this.data; }, data: { src: null, },
Appelez l'interface en 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: "确定" }) } }) } }) },
Faites glisser votre visage pour vous connecter avec succès
Recommandations associées :
PHP implémente la fonction de génération de dictionnaire de données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!