关注分享主机优惠活动
国内外VPS云服务器

微信小程序如何实现人脸识别(微信小程序如何实现人脸识别功能)

本文主要介绍了微信小程序实现人脸识别,添加信息,上传照片,有一定的参考价值,感兴趣的朋友可以参考一下。

本文分享微信小程序人脸识别的具体代码,供大家参考。具体情况如下

首先要有开发者工具。我们今天说的是后端和前端一起实现。

用下面的代码在PHP的控制器中编写一个上传方法:

公共功能上传($ id = & # 039'){ if(empty($id)){返回false} $ no = M(& quot;学生& quot)->;其中(& quotid = { $ id } & quot)->;getField(& # 039;没有& # 039;);$ dir = & quot。/Upload/student face/& quot;;如果(!file_exists($dir)){ mkdir($dir,0777,true);} $upload = new \\Think\\Upload()。//实例化上传类$ upload ->:maxSize = 3145728;//设置$ upload->的附件上传大小:exts = array(& # 039;jpg & # 039, 'gif & # 039, '巴新& # 039;, 'jpeg & # 039);//设置附件上传类型$ upload ->:root path = $ dir;//设置附件上传根目录$upload ->:save path = & # 039;';//设置附件上传(子)目录$ upload ->:saveName = $ no;$ upload -& gt;replace = true$ upload -& gt;autoSub = false//上传文件$ info = $ Upload ->;uploadOne($ _ FILES[& # 039;文件& # 039;]);如果(!$info) {//上传错误消息//return $ this ->:Ajax return(array(& # 039;错误& # 039;= & gt真的,& # 039;msg & # 039= & gt$ upload -& gt;getError()));return JSON _ encode(array(& # 039;错误& # 039;= & gt真的,& # 039;msg & # 039= & gt$ upload -& gt;getError())、JSON _ UNESCAPED _ UNICODE);}else{//上传成功获取上传文件信息//return $ this ->;Ajax return(array(& # 039;错误& # 039;= & gt假的,& # 039;msg & # 039= & gt$ info[& # 039;保存路径& # 039;].$ info[& # 039;savename & # 039],'id & # 039= & gt$ id));$file = $dir。$ info[& # 039;保存路径& # 039;] .$ info[& # 039;savename & # 039];$ image = base64 _ encode(file _ get _ contents($ file));$ this -& gt;facevalid($no,$ image);$ M = M(& # 039;头& # 039;);$ data = $ M-& gt;其中(& quot否= & # 039;{ $ no } & # 039")->;find();If($data){ //如果有数据,更新$ M->:where(& quot;否= & # 039;{ $ no } & # 039")->;保存(数组(& # 039;base64 & # 039= & gt$image,& # 039;路径& # 039;= & gt$ file));} else { $ M-& gt;添加(数组(& # 039;没有& # 039;= & gt不,& # 039;base64 & # 039= & gt$image,& # 039;路径& # 039;= & gt$ file));} return & quot照片收集成功”;} }

公共函数facevalid($no,$image,$ file){ $ options = array();$ options[& quot;max_face_num&quot] = 2;//$ options[& quot;face _ type & quot]= & quot;直播& quot;//$ image = file _ get _ contents($ file);//$ image = base64 _ encode($ image);//echo $ image;$ imageType = & quotBASE64"//调用人脸检测,参数$ client = $ this ->;init _ face();$ret=$client->detect($image,$imageType,$ options);//$ arr = $ ret;//print _ r($ ret);//退出;if($ ret[& # 039;错误代码& # 039;]= = 0){//face $ result = $ ret[& # 039;结果& # 039;];$ face _ num = $ result[& # 039;face _ num & # 039];If(1==$face_num){//面数为1 $ face _ probability = $ result[& # 039;face _ list & # 039][0]['face _ probability & # 039];If(1==$face_probability){//可靠度为1 $ group = $ this ->;face _ group();//echo $ group;//退出;$ faces = $ client -& gt;faceGetlist($no,$ group);if($faces[& # 039;错误代码& # 039;]& gt;0){ $ client ->;addUser($image,& # 039;BASE64 & # 039,$group,$ no);}else{ $client->update user($image,& # 039;BASE64 & # 039,$group,$ no);}//echo & # 039;人脸检测完成,已经入库& # 039;;//返回true//$ arr = array(& # 039;错误& # 039;= & gt假的,& # 039;msg & # 039= & gt'上传成功& # 039;);} else { die(& # 039;图像质量& # 039;);//die(& # 039;画面质量只有:& # 039;。$face_probability。',上传失败& # 039;);} } else { die(& # 039;面数大于1 & # 039;);//die(& # 039;面数大于1,失败& # 039;);} } else { die(& # 039;没有脸& # 039;);//die(& # 039;没面子,失败& # 039;);} }

在前端,我们需要在开发者工具中编写js和wxml。

Js代码如下:

const app = getApp()Page({ data:{ sex:& # 039;女& # 039;,empty:true },cancel:function(){ wx . redirect to({ URL:& # 039;../face/face & # 039;,}) },switch 1 change:function(e){ if(e . detail . value){ this . setdata({ sex:& # 039;男& # 039;})} else { this . setdata({ sex:& # 039;女& # 039;}) } },form submit:function(e){//console . log(e);wx . request({ URL:& # 039;http://*****。top/PPP/server/index . PHP/home/index/index & # 039;,数据:e.detail.value,方法:& # 039;邮政& # 039;,表头:{ & # 039;content -type & # 039;: 'application/x-www -form -urlencoded & # 039;},成功:(RES)= & gt;{ console . log(RES . data);if(RES . data . error){ wx . show toast({ title:RES . data . msg,icon:& # 039;无& # 039;,时长:2000 })} else { wx . show toast({ title:RES . data . msg,icon:& # 039;成功& # 039;,持续时间:2000 })setTimeout(function(){ wx . navigate to({ URL:& # 039;../headimg/headimg?id = & # 039+ res.data.id,}) },2000) } } }) }))

上传图片的js代码如下:

const app = getApp()函数upload(that,id){ if(that . data . files . length = = 0){ return;} wx . uploadfile({ URL:& # 039;http://****。top/PPP/server/index . PHP/home/index/upload & # 039;,//仅举例,虚幻接口地址filepath: that.data.files [0],name:& # 039;文件& # 039;,表单数据:{ & # 039;id & # 039:id },success:function(RES){ var data = RES . data//var JSON = JSON . parse(data)console . log(data)wx . show toast({ title:data,icon:& # 039;成功& # 039;,持续时间:2000 })setTimeout(function(){ wx . navigate to({ URL:& # 039;../index/index & # 039;,}) },2000)} })} Page({ choose image:function(e){ var that = this;wx.chooseImage({ count: 1,size type:[& # 039;原创& # 039;, '压缩& # 039;],//可以指定是原图还是压缩图。默认情况下,它们都有source type:[& # 039;相册& # 039;, '相机& # 039;],//可以指定来源是相册还是相机。默认两者都成功:function(RES){ console . log(RES)//返回选中照片的本地文件路径列表。tempFilePath可以作为img标签的src属性来显示图片that . setdata({ files:RES . tempfile paths,});}}}},//预览照片预览图像:function(){ var current = e . target . dataset . srcwx . preview image({ current:current,urls: this.data.imageList }) },cancel:function(){ wx . redirect to({ URL:& # 039;../index/index & # 039;}}},/* * *页面的初始数据*/data: {files: [],options: null,id: null,},form submit:function(e){ upload(this,this . data . id);},/* * *生命周期函数--监听页面加载*/onload:function(options){ console . log(options);this . setdata({ options:options })this . setdata({ id:options . id })},/** *生命周期函数--监听页面第一次渲染完成*/ onReady: function () {},/** *生命周期函数--监听页面显示*/ onShow: function () {},/* * *生命周期函数--监听页面隐藏*/ onHide: function () {},/* * *生命周期函数--监听页面卸载*/on nload:function(){ },/* * *页面相关事件处理函数 /* * *页面上触底事件的处理函数*/onReachBottom: function () {},/* * *用户点击右上角分享*/onshareAppMessage:function(){ })

wxml代码如下:

& ltview class = & quotweui -cells _ _ title text & quot;& gt输入学生信息

上传图片wxml代码如下:

& ltview class = & quot页面& quotxmlns:wx = & quot;http://www.w3.org/1999/xhtml" & gt;& ltview class = & quotweui -cells _ _ title text & quot;& gt图象采集

未经允许不得转载:主机频道 » 微信小程序如何实现人脸识别(微信小程序如何实现人脸识别功能)

评论 抢沙发

评论前必须登录!