微信小程序人脸识别java_微信小程序使用face++实现人脸识别登录注册
Face++是一个 人工智能开放平台,要使用它我们得先注册并进入控制台创建API Key,这是前提。
平台网址:https://www.faceplusplus.com.cn
整个项目代码我已经上传到网盘。
链接:https://pan.baidu.com/s/156C64y-CO0PNw1jWmfgqcw
提取码:o3jb
一、编写微信小程序界面
界面中有一个相机和两个按钮,本文只管功能实现界面没有美化,在IDE中相机可能打不开是空白的,在真机上是可以的,代码如下。
index.wxml:
拍照注册
拍照验证
index.wxss:
/**index.wxss**/
.test{
display: flex;
flex-direction:row;
}
#login{
margin-left: 10px;
}
二、功能实现
大概请求的过程如下,画的不太标准
1、创建脸集(FaceSet)
这是一组用来管理人脸(Face)或人脸集合(FaceSet)的API。通过这组API,您可以实现查询Face属性、新建FaceSet、删除FaceSet、添加Face到FaceSet等功能。FaceSet能够存储的 人脸数量10000个。
注意:只创建一次,当脸集容量满了可以再创建
请求代码如下:
wx.request({
url: 'https://api-cn.faceplusplus.com/facepp/v3/faceset/create',//请求接口
method: 'post',
data: {
'api_key': '',//请填写你创建的api_key
'api_secret': '',//请填写你的api_secret
'outer_id':'15185672300',//账号下全局唯一的 FaceSet 自己自定义,后面要用到
},
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success(res) {
console.log(res.data)//打印
},fail:function(e){
wx.showModal({
title: '提示',
content: '创建失败',
showCancel: false
})
},complete:function(){
}
})
请求后打印如下信息:
2、人脸注册、登录实现
请看代码详细注释
index.js:
//index.js
//获取应用实例
const app = getApp()
Page({
data: {
},
onLoad: function () {
}, //人脸注册按钮触发此函数
register: function () {
const ctx = wx.createCameraContext() //创建相机上下文
ctx.takePhoto({
quality: 'high', //获取原图
success: (res) => {
this.setData({
src: res.tempImagePath //得到拍照后的图片地址
});
wx.showToast({
icon: "loading",
title: "正在上传中。。。"
});
console.log(res);
var that = this;
wx.uploadFile({ //上传图片到接口,获取人脸唯一标识,face_token
url: "https://api-cn.faceplusplus.com/facepp/v3/detect",
filePath: that.data.src, //刚才拍照的图片地址
name: 'image_file', //图片的字段名和接口的字段要对应上
header: {
"Content-Type": "multipart/form-data" //必须用此header
},
formData: {
'api_key': '3f7C895Stwfxw5yAfFQcrnn5rJ_WBXcD',//请填写你创建的 apikey
'api_secret': 'R9Y-UKyUZOkXeWYEsXcgLVcsdPFlbiGV',//请填写你的api_secret
},
success: function (res) {
console.log(res);
var obj = JSON.parse(res.data); //转换成json格式不然解析不了
if (obj['faces'][0] == null || obj['faces'][0] == '') { //根据反回的数据判断是是否检测到人脸
wx.showModal({
title: '提示',
content: '检测不到人脸',
showCancel: true
})
return;
} else {
that.setData({
face_token: obj['faces'][0]['face_token'],//获取得到的人脸标识
});
//把新注册的人脸与脸集进行对比获得confidence值 这个值大于80我们就认为人脸集中有这个人
wx.request({
url: 'https://api-cn.faceplusplus.com/facepp/v3/search',//接口
method: 'post',
data: {
'api_key': '3f7C895Stwfxw5yAfFQcrnn5rJ_WBXcD',//请填写你创建的 apikey
'api_secret': 'R9Y-UKyUZOkXeWYEsXcgLVcsdPFlbiGV',//请填写你的api_secret
'face_token': that.data.face_token,//传入face_token和脸集中的数据比对
'outer_id': '15185672300', //脸集唯一标识,就是上面我们创建的脸集
'return_result_count': '1'//返回一条匹配数据,范围1-5
},
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success(res) {
console.log(res.data)
//var obj = JSON.parse(res.data);
that.setData({
confidence: res.data['results'][0]['confidence'] //对比得到的可信值
});
},
fail: function (e) {
wx.showModal({
title: '提示',
content: '注册失败',
showCancel: false
})
},
complete: function () {
wx.hideToast();
}
})
if (that.data.confidence < 80) { //可信值小于80我们就把他加到脸集中
//把face_token添加到脸集中
wx.request({
url: 'https://api-cn.faceplusplus.com/facepp/v3/faceset/addface',//添加到脸集的接口
method: 'post',
data: {
'api_key': '3f7C895Stwfxw5yAfFQcrnn5rJ_WBXcD',//请填写你创建的 apikey
'api_secret': 'R9Y-UKyUZOkXeWYEsXcgLVcsdPFlbiGV',//请填写你的api_secret
'face_tokens': that.data.face_token,//把上请求得到的人脸标识添加到脸集中
'outer_id': '15185672300',
},
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success(res) {
console.log(res.data)
wx.showModal({
title: '提示',
content: '注册成功',
showCancel: false
})
},
fail: function (e) {
wx.showModal({
title: '提示',
content: '注册失败',
showCancel: false
})
},
complete: function () {
wx.hideToast();//隐藏提示
}
})
} else {
wx.showModal({
title: '提示',
content: '你已经注册过了',
showCancel: false
})
return;
}
}
console.log('face_token:' + that.data.face_token);
if (res.statusCode != 200) {
wx.showModal({
title: '提示',
content: '上传失败',
showCancel: false
})
return;
}
},
fail: function (e) {
console.log(e);
wx.showModal({
title: '提示',
content: '上传失败',
showCancel: false
})
},
complete: function () {
wx.hideToast(); //隐藏Toast
}
})
}
})
},
error(e) {
console.log(e.detail)
}, //登录验证
login: function () {
var that = this
const ctx = wx.createCameraContext(); //创建相机上下文
ctx.takePhoto({
quality: 'high',
success: (res) => {
this.setData({
src: res.tempImagePath //相机拍照得到照片的地址
})
wx.showToast({
icon: "loading",
title: "正在上传中。。。"
});
wx.uploadFile({ //上传照片和脸集中的照片对比并得出结果
url: 'https://api-cn.faceplusplus.com/facepp/v3/search', //对比人脸接口
filePath: that.data.src,//上传相机拍照得到照片的地址
name: 'image_file',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
formData: {
'api_key': '3f7C895Stwfxw5yAfFQcrnn5rJ_WBXcD',//请填写你创建的 apikey
'api_secret': 'R9Y-UKyUZOkXeWYEsXcgLVcsdPFlbiGV',//请填写你的api_secret
'outer_id': '15185672300', //脸集唯一标识
'return_result_count': '1',//只反回一条匹配数据
},
success: function (res) {
if (res.statusCode != 200) {
wx.showModal({
title: '提示',
content: '上传失败',
showCancel: false
})
return;
}
console.log(res)
var obj = JSON.parse(res.data);//转成json对象
if (obj['faces'][0] == null || obj['faces'][0] == '') {//判断是否检测到人脸
wx.showModal({
title: '提示',
content: '未检测到人脸',
showCancel: false
})
return;
} else {
that.setData({
confidence: obj['results'][0]['confidence'] //可信值
});
console.log(obj['results'][0]['confidence']);
if (that.data.confidence >= 80) { //可信值大于80就认为是同一个人
wx.showModal({
title: '提示',
content: '验证通过',
showCancel: false
})
return;
} else {
wx.showModal({
title: '提示',
content: '验证失败',
showCancel: false
})
return;
}
}
},
fail: function (e) {
console.log(e);
wx.showModal({
title: '提示',
content: '上传失败',
showCancel: false
})
},
complete: function () {
wx.hideToast(); //隐藏Toast
}
})
}
})
},
error(e) {
console.log(e.detail)
}
})
整个项目代码我已经上传到网盘。
链接:https://pan.baidu.com/s/156C64y-CO0PNw1jWmfgqcw
提取码:o3jb
微信小程序人脸识别java_微信小程序使用face++实现人脸识别登录注册相关推荐
- 微信跳一跳怎么修改java_微信跳一跳怎么用抓包修改分数_改数据[多图]
这里给大家提供抓包工具修改分数的教程,以及抓包工具的安装包,请大家仔细看教程,放心使用. 如果玩家们觉得跳一跳玩起来很难,不想自己跳,可以看看下面的微信跳一跳辅助合集,里面包含了各种版本的跳一跳辅助, ...
- 微信小程序运动步数java_微信小程序实现运动步数排行功能(可删除)
效果图如下所示: wxml {{item.rank}} {{item.name}} {{item.pace}} 删除 wxss /* pages/leftSwiperDel/index.wxss */ ...
- 微信小程序运动步数java_微信小程序实现运动步数排行(可删除)
wxml {{item.rank}} {{item.name}} {{item.pace}} 删除 wxss /* pages/leftSwiperDel/index.wxss */ view{ bo ...
- 微信支付图片上传java_微信开发-----微信公众号调用微信上传图片接口
$(function () { var url = location.href.split('#')[0]; var date = "url=" + url; //get中url指 ...
- 微信jssdk 图片上传 JAVA_微信jssdk图片上传
classJSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this ...
- 微信扫码支付demo java_微信扫码支付JavaDemo
[实例简介] 完全可用的微信扫码支付JavaDemo,如不能使用请站内联系本人 [实例截图] [核心代码] weChatpay_demo └── weChatpay_demo ├── src │ ...
- 微信退款通知req_info解密java_微信退款通知信息解密
在最近的开发需求中,有一个需求,就是需要把微信退款通知记录在数据库中,原本以为是一个简单的需求,但是微信文档的坑,是你不能理解的. 在微信退款通知返回的字段中有一个加密信息字段req_info.这个加 ...
- 微信分享到朋友圈java_微信开发(三)微信分享朋友朋友圈
这里基于微信的都是需要用到参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68 ...
- 小程序加入人脸识别_微信小程序+人脸识别
为什么在原有的基础上增加人脸识别呢,因为我也厌倦了账号+密码的登录方式,所以想试一试在原有的功能上采用人脸识别登录. 识别过程借助于百度AI,服务器依旧是 SSM 框架.废话少说下面直接进入主题 服务 ...
- 小程序加入人脸识别_微信小程序 人脸识别登陆模块
微信小程序---人脸识别登陆的实现 关键词:微信小程序 人脸识别 百度云接口 前言 这是一篇关于一个原创微信小程序开发过程的原创文章.涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口.小程序的 ...
最新文章
- php ImageMagick扩展
- 初学api测试_面向初学者的API-在此免费视频课程中学习如何使用API
- Python协方差矩阵处理脑电数据
- 爬虫中之Requests 模块的进阶
- js 算法排序总结
- cmd中操作mysql_Windows中cmd操作mysql
- java中sql去除游标_java.sql.SQLException:-ORA-01000:已超过最大打开游标
- case zhen语句_switch case语句,switch case用法详解
- 2018-2019-2 20175328 《Java程序设计》第十一周学习总结
- LAMP搭建discuz
- 图片列表模板 html代码,图片列表模板
- 强悍的命令行 —— 路径相关
- ServletConfig对象--配置初始化参数以及获取初始化参数
- 对voc2007数据集进行person的单类数据抽取
- 给UI/UX设计师推荐5个国外网站
- L1-009 N个数求和 (20分)【附测试】
- Curious Array
- 《伟大是熬出来的》冯仑与年轻人闲话人生之三
- Springboot+oauth2.0实现微信登录(oauth2.0自定义授权模式)
- SAP发票校验容差的理解
热门文章
- ureport2报表详细使用(一)-集成及配置
- 计算机缺少网络插口,笔记本电脑没有网线插口且USB接口太少怎么办?
- 在命令行中创建Django项目
- mysql 网吧管理系统设计_网吧管理系统开题报告.doc
- 2022-2028全球与中国卫星地面网络科技市场现状及未来发展趋势
- 利用小波分解后,频率计算问题
- mysql emoji表情_mysql utf8mb4与emoji表情
- 基于Scrapy+MySQL爬取国家药监局100w+数据踩坑记录
- movielens 1m 的mysql_数据分析实例-MovieLens 1M 数据集
- 风景园林设计专业要学哪些软件?这几款软件你一定要了解!