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++实现人脸识别登录注册相关推荐

  1. 微信跳一跳怎么修改java_微信跳一跳怎么用抓包修改分数_改数据[多图]

    这里给大家提供抓包工具修改分数的教程,以及抓包工具的安装包,请大家仔细看教程,放心使用. 如果玩家们觉得跳一跳玩起来很难,不想自己跳,可以看看下面的微信跳一跳辅助合集,里面包含了各种版本的跳一跳辅助, ...

  2. 微信小程序运动步数java_微信小程序实现运动步数排行功能(可删除)

    效果图如下所示: wxml {{item.rank}} {{item.name}} {{item.pace}} 删除 wxss /* pages/leftSwiperDel/index.wxss */ ...

  3. 微信小程序运动步数java_微信小程序实现运动步数排行(可删除)

    wxml {{item.rank}} {{item.name}} {{item.pace}} 删除 wxss /* pages/leftSwiperDel/index.wxss */ view{ bo ...

  4. 微信支付图片上传java_微信开发-----微信公众号调用微信上传图片接口

    $(function () { var url = location.href.split('#')[0]; var date = "url=" + url; //get中url指 ...

  5. 微信jssdk 图片上传 JAVA_微信jssdk图片上传

    classJSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this ...

  6. 微信扫码支付demo java_微信扫码支付JavaDemo

    [实例简介] 完全可用的微信扫码支付JavaDemo,如不能使用请站内联系本人 [实例截图] [核心代码] weChatpay_demo └── weChatpay_demo ├── src │   ...

  7. 微信退款通知req_info解密java_微信退款通知信息解密

    在最近的开发需求中,有一个需求,就是需要把微信退款通知记录在数据库中,原本以为是一个简单的需求,但是微信文档的坑,是你不能理解的. 在微信退款通知返回的字段中有一个加密信息字段req_info.这个加 ...

  8. 微信分享到朋友圈java_微信开发(三)微信分享朋友朋友圈

    这里基于微信的都是需要用到参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68 ...

  9. 小程序加入人脸识别_微信小程序+人脸识别

    为什么在原有的基础上增加人脸识别呢,因为我也厌倦了账号+密码的登录方式,所以想试一试在原有的功能上采用人脸识别登录. 识别过程借助于百度AI,服务器依旧是 SSM 框架.废话少说下面直接进入主题 服务 ...

  10. 小程序加入人脸识别_微信小程序 人脸识别登陆模块

    微信小程序---人脸识别登陆的实现 关键词:微信小程序 人脸识别 百度云接口 前言 这是一篇关于一个原创微信小程序开发过程的原创文章.涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口.小程序的 ...

最新文章

  1. php ImageMagick扩展
  2. 初学api测试_面向初学者的API-在此免费视频课程中学习如何使用API
  3. Python协方差矩阵处理脑电数据
  4. 爬虫中之Requests 模块的进阶
  5. js 算法排序总结
  6. cmd中操作mysql_Windows中cmd操作mysql
  7. java中sql去除游标_java.sql.SQLException:-ORA-01000:已超过最大打开游标
  8. case zhen语句_switch case语句,switch case用法详解
  9. 2018-2019-2 20175328 《Java程序设计》第十一周学习总结
  10. LAMP搭建discuz
  11. 图片列表模板 html代码,图片列表模板
  12. 强悍的命令行 —— 路径相关
  13. ServletConfig对象--配置初始化参数以及获取初始化参数
  14. 对voc2007数据集进行person的单类数据抽取
  15. 给UI/UX设计师推荐5个国外网站
  16. L1-009 N个数求和 (20分)【附测试】
  17. Curious Array
  18. 《伟大是熬出来的》冯仑与年轻人闲话人生之三
  19. Springboot+oauth2.0实现微信登录(oauth2.0自定义授权模式)
  20. SAP发票校验容差的理解

热门文章

  1. ureport2报表详细使用(一)-集成及配置
  2. 计算机缺少网络插口,笔记本电脑没有网线插口且USB接口太少怎么办?
  3. 在命令行中创建Django项目
  4. mysql 网吧管理系统设计_网吧管理系统开题报告.doc
  5. 2022-2028全球与中国卫星地面网络科技市场现状及未来发展趋势
  6. 利用小波分解后,频率计算问题
  7. mysql emoji表情_mysql utf8mb4与emoji表情
  8. 基于Scrapy+MySQL爬取国家药监局100w+数据踩坑记录
  9. movielens 1m 的mysql_数据分析实例-MovieLens 1M 数据集
  10. 风景园林设计专业要学哪些软件?这几款软件你一定要了解!