当前位置: 首页 > news >正文

小程序实现人脸识别功能

调用api   wx.startFacialRecognitionVerify

第一步:

// 修改方法expertUpdate() {wx.startFacialRecognitionVerify({name: _this.registerForm.realName, //身份证名称idCardNumber: _this.registerForm.idCard, //身份证号码checkAliveType: 1, //屏幕闪烁(人脸核验的交互方式,默认0,读数字)success(res) {console.log(res)  //认证结果if(res.errCode == 0){//识别成功  这个时候可以调后端的接口 (带着返的res.verifyResult)_this.verifyUser(res.verifyResult)}else{tipInfo("识别失败")}},complete(res) {console.log(res)},fail(e) {console.log("err", err)//失败处理方法wx.showToast('请保持光线充足,面部正对手机,且无遮挡')}})}

第二步:调方法 校验后端的接口

 // 人脸识别  根据上一个方法把verify_result传过来  //后端的校验接口verifyUser(verify_result) {//看后端实际要求 要传身份证号码不let obj = {uuid: this.infoForm.idCard,verify_result: verify_result}//后端接口=>verifyUserverifyUser(obj).then(res => {if (res.code == '0') {this.$refs.uForm.validate().then(res => {let obj = {pkid: uni.getStorageSync('expert_info').pkid,memberId: uni.getStorageSync('expert_info').memberId,avatar: this.fileList1[0].url,realName: this.infoForm.realName,orgName: this.infoForm.orgName,idCard: this.infoForm.idCard,province: this.infoForm.province,city: this.infoForm.city,district: this.infoForm.district,phone: this.infoForm.phone,professorLevel: this.infoForm.professorLevel,adept: this.infoForm.adept,intro: this.infoForm.intro,smsCode: this.infoForm.smsCode,annex: this.fileList2,}//修改方法expertUpdate(obj).then(res => {console.log(res, '修改成功了吗');if (res.code == '0') {uni.$u.toast('修改成功', 5000)uni.navigateBack()//修改成功后 是返回上一步  还是跳转其他页面 根据实际情况} else {uni.$u.toast(res.msg, 5000)}})console.log(res);}).catch(error => {console.log(error);uni.$u.toast('请先按要求填写', 5000)})}})},

注释:完整方法  这个是实现小程序个人信息完善,加了一个判断,如果 输入框没有值则需要走人脸识别验证方法  如果有值 只是修改其他项 就不需要验证  修改完成之后 名字和身份证号码直接禁用

 // 修改方法expertUpdate() {if (this.fileList1.length == 0) {uni.$u.toast('请上传头像')return false}// 判断 realName 是否为空if (!this.infoForm.realName) {uni.$u.toast('请填写姓名');return false;}// 验证 realName 是否为中文const chineseRegex = /^[\u4e00-\u9fa5]+$/;if (!chineseRegex.test(this.infoForm.realName)) {uni.$u.toast('姓名必须为中文');return false;}// 判断 idCard 是否为空if (!this.infoForm.idCard) {uni.$u.toast('请填写身份证号码');return false;}// 验证 idCard 是否符合身份证标准const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;if (!idCardRegex.test(this.infoForm.idCard)) {uni.$u.toast('身份证号格式不正确');return false;}if (this.fileList2.length == 0) {uni.$u.toast('请上传附件')return false}if (this.infoForm.intro.length > 200) {uni.$u.toast('简介字数不能超过200字!')return false}if (!this.flag) {let _this = thiswx.startFacialRecognitionVerify({name: _this.infoForm.realName,idCardNumber: _this.infoForm.idCard,checkAliveType: 1,success(res) {console.log(res)_this.verifyUser(res.verifyResult)// console.log(res)// uni.navigateBack()},complete(res) {console.log(res)},fail(e) {// console.log(res)// console.log(_this.infoForm.realName)// console.log(_this.infoForm.idCard)console.log(e, 'fail')}})} else {this.$refs.uForm.validate().then(res => {let obj = {pkid: uni.getStorageSync('expert_info').pkid,memberId: uni.getStorageSync('expert_info').memberId,avatar: this.fileList1[0].url,realName: this.infoForm.realName,orgName: this.infoForm.orgName,idCard: this.infoForm.idCard,province: this.infoForm.province,city: this.infoForm.city,district: this.infoForm.district,phone: this.infoForm.phone,professorLevel: this.infoForm.professorLevel,adept: this.infoForm.adept,intro: this.infoForm.intro,smsCode: this.infoForm.smsCode,annex: this.fileList2,}expertUpdate(obj).then(res => {console.log(res, '修改成功了吗');if (res.code == '0') {uni.$u.toast('修改成功', 5000)uni.navigateBack()// this.getExpertInfo()} else {uni.$u.toast(res.msg, 5000)}})console.log(res);}).catch(error => {console.log(error);uni.$u.toast('请先按要求填写', 5000)})}},// 人脸识别verifyUser(verify_result) {let obj = {uuid: this.infoForm.idCard,verify_result: verify_result}verifyUser(obj).then(res => {if (res.code == '0') {this.$refs.uForm.validate().then(res => {let obj = {pkid: uni.getStorageSync('expert_info').pkid,memberId: uni.getStorageSync('expert_info').memberId,avatar: this.fileList1[0].url,realName: this.infoForm.realName,orgName: this.infoForm.orgName,idCard: this.infoForm.idCard,province: this.infoForm.province,city: this.infoForm.city,district: this.infoForm.district,phone: this.infoForm.phone,professorLevel: this.infoForm.professorLevel,adept: this.infoForm.adept,intro: this.infoForm.intro,smsCode: this.infoForm.smsCode,annex: this.fileList2,}expertUpdate(obj).then(res => {console.log(res, '修改成功了吗');if (res.code == '0') {uni.$u.toast('修改成功', 5000)uni.navigateBack()// this.getExpertInfo()} else {uni.$u.toast(res.msg, 5000)}})console.log(res);}).catch(error => {console.log(error);uni.$u.toast('请先按要求填写', 5000)})}})},

相关文章:

小程序实现人脸识别功能

调用api wx.startFacialRecognitionVerify 第一步: // 修改方法expertUpdate() {wx.startFacialRecognitionVerify({name: _this.registerForm.realName, //身份证名称idCardNumber: _this.registerForm.idCard, //身份证号码checkAliveType: 1, //屏幕闪烁(人脸核验的交互…...

【】javax.crypto.IllegalBlockSizeException: Input length not multiple of 8 bytes

问题描述 jdk版本:8 用DES进行加解密,其中转换模式为“DES/CBC/NoPadding”,要加密的明文为 “密码学浅析”,执行加密操作,报如下错误 Exception in thread "main" javax.crypto.IllegalBlockSizeExcepti…...

312.戳气球

将戳气球转换到添加气球&#xff0c;记忆搜索slove(i,j)&#xff1a;在开区间(i,j)全部填满气球得到的最多硬币数&#xff0c;两端val[i]、val[j] class Solution { public:vector<vector<int>> ans;vector<int> val;int slove(int left,int right){if(left&…...

get_trade_detail_data函数使用

查阅股票持仓情况 positions get_trade_detail_data(‘8000000213’, ‘stock’, ‘position’) for dt in positions: print(f’股票代码: {dt.m_strInstrumentID}, 市场类型: {dt.m_strExchangeID}, 证券名称: {dt.m_strInstrumentName}, 持仓量: {dt.m_nVolume}, 可用数量:…...

【融合ChatGPT等AI模型】Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

目录 第一章 理论基础 第二章 开发环境搭建 第三章 遥感大数据处理基础与ChatGPT等AI模型交互 第四章 典型案例操作实践 第五章 输入输出及数据资产高效管理 第六章 云端数据论文出版级可视化 更多应用 随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近…...

LeetCode862 和至少为k的最短子数组

题目&#xff1a; 解析&#xff1a; 1、先构造前缀和数组 2、单调队列存放滑动窗口&#xff0c;目的求Sj-Si >k的情况下&#xff0c;窗口最小。 代码&#xff1a; class Solution {public int shortestSubarray(int[] nums, int k) {int n nums.length;long[] sums new …...

网卡bonding模式 - bond模式配置介绍

网卡bonding简介 网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡&#xff0c;配置完毕后&#xff0c;所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度&#xff0c;还可以实现网卡的负载均衡、冗余。 bonding模式 1 round-robin(mode0) 轮转…...

做了个 chrome 插件实现 B 站视频截图功能,直接从当前视频帧无损复制

起因是看 B 站视频想截个图很麻烦&#xff0c;右下角暂停按钮无法去除&#xff0c;于是写了一行代码把暂停按钮隐藏。 后经提醒&#xff0c;发现可以通过 canvas 获取视频帧来截取图片&#xff0c;于是写了如下代码完美获取视频帧。 var v document.querySelector(".bpx…...

Docker linux 安装

sudo yum update sudo yum clean all sudo yum makecache#安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #添加官方存储库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo#安装-跳过一些异常依赖…...

windows部署django服务器

windows部署django服务器 1、安装IIS1.1 控制面板-----程序----程序和功能----启用或关闭windows功能1.2安装IIS服务器&#xff0c;完成后&#xff0c;重新进入&#xff0c;把CGI安装进系统 2、安装python与虚拟环境2.1 安装python2.2 安装virtualenv虚拟环境2.3 创建一个虚拟环…...

ChatGPT prompt汇总-个人使用-持续更新....

用途 学术写作更新记录 学术写作 中译英(GPT-4) I am a researcher studying deep learning and now trying to revise my manuscript which will be submitted to the Journal of Nature . I want you to act as a scientific English-Chinese translator, I will provide yo…...

Vue实现简单的接口封装

1. 在src中创建一个api文件夹 2. 按功能、模块等新建对应的js文件 3. 在内部写对应的封装接口&#xff0c;并导出 import axios from "axios";/*** 接口名称&#xff1a;* 接收参数&#xff1a;* 返回参数&#xff1a;* */export const miens ()>{return new P…...

软件测试工具有什么作用?有哪些好用的测试工具推荐?

软件测试工具是现代软件测试中不可或缺的重要组成部分&#xff0c;指的是一系列在软件开发过程中使用的工具&#xff0c;用于帮助测试人员进行测试活动&#xff0c;提高测试效率&#xff0c;减少测试成本。选择并使用合适的软件测试工具&#xff0c;可提高软件质量和效率。 一…...

写爬虫?前端er何必用python

前言 说起网络爬虫,很多人第一时间想到python,但爬虫并非只能用python实现,虽然网上大部分爬虫文章都在说python爬虫,但对于前端程序员来说,我觉得js才是最屌的(对于简单爬取任务来说,复杂的我暂时没碰到~),下面说说我的经验(是的,仅限本人经验),希望能给各位前…...

交通物流模型 | 基于交通图卷积长短时记忆网络的网络级交通流预测

交通物流模型 | 基于交通图卷积长短时记忆网络的网络级交通流预测 由于道路网络时变的交通模式和复杂的空间依赖性,交通流预测是一个具有挑战性的时空预测问题。为了克服该挑战,作者将交通网络看为一张图,并提出一个新的深度学习预测模型,交通图卷积长短时记忆网络(TGC-L…...

web 基础和http 协议

一、域名 域名的概念 IP地址不易记忆&#xff0c;域名方便记住&#xff0c;以便于用户进行搜索访问 早期使用Hosts文件解析域名地址 缺点&#xff1a; ① 主机名称重复 ② 主机维护困难 DNS&#xff08;Domain Name System&#xff09;域名系统 ① 分布式 将一个大的数…...

Java常量与变量

Java常量与变量 在程序执行过程中&#xff0c;其值不能被改变的量称为常量&#xff0c;其值能被改变的量称为变量。 Java关键字 Java关键字 int public (公有的,可跨包) new finally throw (抛出一个异常对象) continuefloatlongshort extends (继承,用于类继承类) returnbrea…...

神经网络中卷积和池化的区别

1、什么叫卷积&#xff1f; 卷积层是用一个固定大小的矩形区去席卷原始数据&#xff0c;将原始数据分成一个个和卷积核大小相同的小块&#xff0c;然后将这些小块和卷积核相乘输出一个卷积值&#xff08;注意这里是一个单独的值&#xff0c;不再是矩阵了&#xff09;。 卷积的…...

RK3568平台开发系列讲解(驱动篇)RK3568 PWM详解

🚀返回专栏总目录 文章目录 一、什么是PWM二、RK3568 PWM2.1、PWM 通道与引脚2.2、PWM 简介2.3、PWM 设备节点沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 PWM 是很常用到功能,我们可以通过 PWM 来控制电机速度,也可以使用 PWM 来控制 LCD 的背光亮度。 一、什…...

禾匠商城系统 企业转账到零钱 修改成 商家转账到零钱

注意php 7以上的json_encode 溢出 修改的路径&#xff1a; vendor/luweiss/wechat/src/Wechat/WechatPay.php <?phpnamespace luweiss\Wechat;class WechatPay extends WechatBase {const SIGN_TYPE_MD5 MD5;const TRADE_TYPE_JSAPI JSAPI;const TRADE_TYPE_NATIVE NA…...

点云从入门到精通技术详解100篇-基于激光点云的道路目标检测

目录 前言 国内外研究现状 点云目标检测算法的研究现状 激光雷达相关技术 2.1 引言...

【Hello Algorithm】暴力递归到动态规划(一)

暴力递归到动态规划&#xff08;一&#xff09; 斐波那契数列的动态规划机器人走路初级递归初级动态规划动态规划 先后选牌问题初级递归初级动态规划动态规划 我们可以一句话总结下动态规划 动态规划本质是一种以空间换时间的行为 如果你发现有重复调用的过程 在经过一次之后把…...

凉鞋的 Godot 笔记 107. 脚本窗口文件系统窗口

107. 脚本窗口&文件系统窗口 在上一篇&#xff0c;我们完成了第二轮循环&#xff0c;同时也接触了一些新内容&#xff0c;如下所示: 频率使用比较高的窗口&#xff0c;还剩下最后两个了&#xff0c;一个是脚本窗口&#xff1a; 另一个是文件系统窗口: 脚本窗口 和 文件系统…...

数据源作用以及spring配置数据源

数据源 数据源&#xff0c;简单理解为数据源头&#xff0c;提供了应用程序所需要数据的位置。数据源保证了应用程序与目标数据之间交互的规范和协议&#xff0c;它可以是数据库&#xff0c;文件系统等等。其中数据源定义了位置信息&#xff0c;用户验证信息和交互时所需的一些…...

Javaweb中的servlet中的消息体是什么?

2023年10月9日&#xff0c;周一晚上 目录 什么是消息体 什么是HTTP响应 HTTP响应由谁产生&#xff0c;发给谁 响应头具体有什么内容 Content-Type的值怎么写 HTTP响应例子 什么是消息体 消息体(message body)指HTTP响应中的实体主体内容。 什么是HTTP响应 在HTTP响应中…...

饥荒服务器阿里云租用价格表一年和一个月收费报价表

饥荒阿里云服务器多少钱一个月&#xff1f;阿里云服务器价格9元一个月&#xff0c;阿里云轻量应用服务器2核2G3M带宽轻量服务器一年108元&#xff0c;2核4G4M带宽轻量服务器一年297.98元12个月&#xff1b;阿里云ECS云服务器e系列2核2G配置182元一年、2核4G配置365元一年、2核8…...

前端 JS 经典:Math 常用方法汇总

1. Math.ceil 向上取整 Math.ceil(1.2) // 2 2. Math.floor 向下取整 Math.floor(1.2) // 1 3. Math.round 四舍五入 Math.round(1.4) // 1 Math.round(1.6) // 2 4. Math.random 0-1 随机数 Math.random() // 0.2745798547204079 5. Math.max 返回大值 Math.max(1.2,…...

MongoDB 笔记

1 insert 、create、save区别 insert: 主键不存在则正常插入&#xff1b;主键已存在&#xff0c;抛出DuplicateKeyException 异常 save: 主键不存在则正常插入&#xff1b;主键已存在则更新 insertMany&#xff1a;批量插入&#xff0c;等同于批量执行 insert create&#x…...

Maven 项目文档

本章节我们主要学习如何创建 Maven 项目文档。 比如我们在 C:/MVN 目录下&#xff0c;创建了 consumerBanking 项目&#xff0c;Maven 使用下面的命令来快速创建 java 项目&#xff1a; mvn archetype:generate -DgroupIdcom.companyname.bank -DartifactIdconsumerBanking -…...

浏览器中XPath的使用

概念 XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言&#xff0c;可用来在 XML 文档中对元素和属性进行遍历。 XPath定位在爬虫和自动化测试中都比较常用&#xff0c;通过使用路径表达式来选取 XML 文档中的节点或者节点集&#xff0c;熟练掌握XPath可以极大提…...