微信小程式人臉識別的實現
阿新 • • 發佈:2019-02-12
首先我們建立一個前臺的頁面設計
<!--pages/camera/camera.wxml-->
<camera device-position="{{device}}" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>
<switch bindtap='switchchange'></switch>
<button type="primary" bindtap="takePhoto">刷臉登入</button>
通過遠端預覽來進行拍照,在後臺進行操作
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->rootPath = $dir; // 設定附件上傳根目錄 $upload->savePath = ''; // 設定附件上傳(子)目錄 $upload->autoSub=false;//禁止自動建立子目錄 //上傳檔案 $info = $upload->uploadOne($_FILES['file']); if(!$info) {// 上傳錯誤提示錯誤資訊 echo json_encode(array('error'=>true,'msg'=>$upload->getError())); }else{// 上傳成功 獲取上傳檔案資訊 // return $this->ajaxReturn(array('error'=>false,'msg'=>$info['savepath'].$info['savename'])); $file=$dir.$info['savepath'].$info['savename']; $image=base64_encode(file_get_contents($file)); $dir=APP_PATH.'/face-sdk/'; require_once $dir . 'AipFace.php'; $APP_ID='11257174'; $API_KEY='8e9X3fP68QQ4lWqRGm9usYQh'; $SECRET_KEY='GVst6bFZ4nnEk7pVWzqsAO2FnRcr9Vyy'; $client= new \AipFace($APP_ID,$API_KEY,$SECRET_KEY); $options['liveness_control']='NORMAL'; $options['max_user_num']='1'; $ret=$client->search($image,'BASE64',$this->face_group(),$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(!empty($no)){ $data=M('student')->field('no,name,sex')->where("no='{$no}'")->find(); if($data){ $data['score']=$score; echo json_encode($data,JSON_UNESCAPED_UNICODE); } }else{ echo "本資料庫沒有該學生"; } }else{ echo "活體檢測失敗"; } } }
通過介面進行操作
這樣就可以在人臉庫中查詢,實現人臉識別的功能takePhoto() { const ctx = wx.createCameraContext() ctx.takePhoto({ quality: 'high', success: (res) => { // console.log(res); // this.setData({ // src: res.tempImagePath // }) wx.showLoading({ title: '正在核驗身份...', }) this.setData({ logindisabled: true }); wx.uploadFile({ url: '', //僅為示例,非真實的介面地址 filePath: res.tempImagePath, name: 'file', formData: { 'user': 'test' }, success: (res)=> { console.log(res.data); wx.hideLoading(); this.setData({logindisabled:false}); var data=res.data; console.log(data); wx.showModal({ title:'提示', content:data, showCance:false }) } }) } }) },