当前位置: 首页 > 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…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...