本文为大家分享了微信小程序人脸识别的具体代码,供大家参考,具体内容如下
首先,我们要有开发者工具,今天所说的是后端和前端联合起来实现的。
在PHP的控制器中写一个上传方法,代码如下:
公共函数上传($ id=") { 如果(空($ id)) { 返回错误; } 没有=美元(“学生”)→地方(" id={$ id} ")→getField(“不”); $ dir=啊?上传/studentface/? 如果(! file_exists (dir美元)){ mkdir (dir 0777美元,真); } 上传美元=new \认为\上传();//实例化上传类 上传→美元最大尺寸=3145728;//设置附件上传大小 上传→美元ext=阵列(jpg, gif, png, jpeg);//设置附件上传类型 上传→美元rootPath=dir美元;//设置附件上传根目录 上传→美元savePath=";//设置附件上传(子)目录 上传→美元saveName=美元没有; 上传→美元取代=true; 上传→美元autoSub=false;//上传文件 信息=上传→美元uploadOne(带有_file美元['文件']); 如果(! $ info){//上传错误提示错误信息//返回$ this→ajaxReturn(数组('错误'=祝辞没错,‘味精’=祝辞上传→美元getError ())); 返回json_encode(数组('错误'=祝辞;的确,‘味精’=祝辞上传→美元getError ()), JSON_UNESCAPED_UNICODE); 其他}{//上传成功获取上传文件信息//返回$ this→ajaxReturn(数组('错误'=祝辞假,“味精”=祝辞信息(“savepath”)。美元信息(“savename”),“id”=祝辞;$ id)); 文件=dir美元。美元的信息(“savepath”)。美元的信息(“savename”); 形象=美元base64_encode (file_get_contents(文件)美元); $ this→facevalid(不,形象美元); m=美元(头); data=https://www.yisu.com/zixun/m美元->,(“没有={$没有}”)→找到(); 如果(元数据){//有数据,则更新 m→美元,(“没有={$没有}”)→保存(数组(“base64”=祝辞$形象,“路径”=祝辞文件)美元); 其他}{ m美元→添加(数组(“不”=祝辞;不,美元的base64=祝辞形象,美元“路径”=祝辞文件)美元); } 返回“采集照片成功”; } }
公共函数facevalid(不,形象,美元$文件){ $=选项数组(); 选项(“max_face_num”)=2美元;//选择美元(“face_type”)=盎睢?//图像=美元file_get_contents($文件);//图像=美元base64_encode($形象);//echo $形象; $ imageType=癇ASE64”;//带参数调用人脸检测 客户=这→美元init_face (); ret=美元客户→检测(形象,imageType美元,美元选项);//arr=美元受潮湿腐烂;//print_r (ret);//退出; 如果(美元ret的error_code==0){//有人的脸 结果=ret美元(的结果); face_num=结果美元(“face_num”); 如果(1美元==face_num){//人脸数量为1 face_probability=结果美元[' face_list '] [0] [' face_probability ']; 如果(1美元==face_probability){//可靠性为1 组=这→美元face_group ();//echo $组;//退出; 面临=客户→美元faceGetlist(不,美元集团); 如果(面临美元(“error_code”)在0){ 客户→美元addUser($形象,BASE64,美元集团没有美元); 其他}{ 客户→美元updateUser($形象,BASE64,美元集团没有美元); }//echo '人脸检测完成,并已入库”;//返回true;//$ arr=数组('错误'=祝辞假,“味精”=祝辞的上传成功”); 其他}{ 死亡(“图片质量”);//死亡(“图片质量仅为:“face_probability美元。”,上传失败”); } 其他}{ 死亡(“人脸数量大于1 ');//死亡(“人脸数量大于1,失败”); } 其他}{ 死('没有人脸”);//死亡(“没有人脸,失败”); } }
在前端我们需要在开发者工具里写js和wxml。
js代码如下:
const应用=getApp () 页面({ 数据:{ 性别:女, 空:真 }, 取消:函数(){ wx.redirectTo ({ url:“. ./脸/脸”, }) }, switch2Change:函数(e) { 如果(e.detail.value) { 这一点。setData({性:'男'}) 其他}{ 这一点。setData({性:'女'}) } }, formSubmit:函数(e) {//console.log (e); wx.request ({ url: http://直* * * * *上/ppp/服务器/index . php/home/索引/指数”, 数据:e.detail.value, 方法:“文章”, 标题:{ “内容类型”:“应用程序/x-www-form-urlencoded” }, 成功:(res)=比;{ 控制台.log(重新数据); 如果(res.data.error) { wx.showToast ({ 标题:res.data.msg, 图标:“没有”, 持续时间:2000 }) 其他}{ wx.showToast ({ 标题:res.data.msg, 图标:“成功”, 持续时间:2000 }) setTimeout(函数(){ wx.navigateTo ({ url:“. ./headimg/headimg& # 63; id=" + res.data.id, }) }, 2000) } } }) } })微信小程序实现人脸识别