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

微信小程序实现人脸识别登录

在这里插入图片描述

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹

🦁作者简介:一名喜欢分享和记录学习的在校大学生
💥个人主页:code袁的博客
💥 个人QQ:2647996100
🐯 个人wechat:code8896
code袁系列专栏导航
1.《毕业设计与课程设计》本专栏分享一些毕业设计的源码以及项目成果。🥰🥰🥰
2.《微信小程序开发》本专栏从基础到入门的一系开发流程,并且分享了自己在开发中遇到的一系列问题。🤹🤹🤹
3.《vue开发系列全程线路》本专栏分享自己的vue的学习历程。

非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨ 

在这里插入图片描述

1. 需求分析

人脸识别登录是一种基于生物特征的身份验证技术,近年来随着人工智能和计算机视觉技术的发展而逐渐普及。以下是人脸识别登录的需求背景分析:

1. 安全性需求
  • 提高安全性:传统的用户名和密码登录方式容易受到攻击,如密码被盗、暴力破解等。人脸识别通过生物特征进行身份验证,增加了安全性。
  • 防止身份伪造:人脸识别系统可以通过活体检测技术,防止使用照片或视频进行身份冒充。
2. 用户体验
  • 便捷性:用户无需记住复杂的密码,只需通过摄像头扫描面部即可快速登录,提升了用户体验。
  • 快速登录:人脸识别技术能够在几秒钟内完成身份验证,适合需要快速访问的场景,如金融服务、社交媒体等。
3. 应用场景广泛
  • 移动设备:智能手机、平板电脑等移动设备普遍采用人脸识别技术作为解锁方式,满足用户对便捷性的需求。
  • 企业应用:在企业环境中,人脸识别可以用于考勤管理、门禁控制等,提高管理效率。
  • 公共安全:在公共场所(如机场、车站等)使用人脸识别技术进行身份验证,有助于提升安全防范能力。
4. 技术发展
  • 深度学习技术:随着深度学习和计算机视觉技术的进步,人脸识别的准确性和速度得到了显著提升,使其在实际应用中更加可靠。
  • 硬件普及:现代设备(如智能手机、监控摄像头等)普遍配备高质量的摄像头,为人脸识别提供了良好的硬件基础。
5. 法规与隐私保护
  • 合规性需求:随着数据保护法规(如GDPR等)的实施,企业在使用人脸识别技术时需要遵循相关法律法规,确保用户隐私得到保护。
  • 用户信任:为了获得用户的信任,企业需要透明地告知用户人脸数据的使用方式,并采取必要的安全措施来保护这些数据。
6. 市场趋势
  • 市场需求增长:随着人们对安全性和便捷性的关注增加,人脸识别技术的市场需求持续增长,推动了相关产品和服务的发展。
  • 竞争优势:企业通过引入人脸识别登录系统,可以在激烈的市场竞争中获得技术优势,吸引更多用户。

2.项目实现

2.1 开通百度智能云API

登录到百度智能云
在这里插入图片描述

注册登录账号后,需要进行个人的认证。认证完成后

在这里插入图片描述
在这里插入图片描述
大概有1000多次的免费额度
在这里插入图片描述
创建应用后会生成API Key和Secret Key后面会用到

3.代码实现

3.1注册

当用户注册时,需要录入人脸,会调用摄像头进行拍照。然后将照片转化为Base64的格式。存储到数据库中

wxml

<view  class="camera1"><view class="title">请将人脸移入框内</view><camera style="width: 100%; height:500rpx;border-radius: 100%; border:8rpx solid #ff5556;" device-position="front"></camera><button class="bt" style="background-color: {{themColor}}; width: 550rpx;" bind:tap="getPicBase">拍摄</button>
</view>

wxss

.title{text-align: center;font-size: 40rpx;margin-bottom: 100rpx;
}
.camera1{margin: 200rpx auto;height: 600rpx;width: 500rpx;border-radius: 20rpx;
}

js

  getPicBase(){const ctx=wx.createCameraContext()face.getPicFromcenavm(ctx).then(res=>{this.setData({Base64:res,checkFace:false})})},

face.js封装

function getPicFromcenavm(ctx){return new Promise(function(resolve, reject){ctx.takePhoto({quality:'low',success: (res) => {getBase64(res.tempImagePath).then(function(res2){console.log(res2);resolve(res2.data);});}})})
}function getBase64(tempImagePath){return new Promise(function (resolve, reject){wx.getFileSystemManager().readFile({filePath: tempImagePath,encoding:"base64",success:function(data){resolve(data)}})})
}
module.exports={getPicFromcenavm:getPicFromcenavm
}
3.2 登录

当用户选择人脸登录时,将用户登录时的人脸拍照下来转化为Base64与用户数据中的注册时的Base64的数据一起发送到百度的人脸比对。比对完后会返回一个相似度。当相似度大于90时。即同一个人。

wxml

<view hidden="{{!checkFace}}" class="camera1"><view class="title">请将人脸移入框内</view><camera style="width: 100%; height:500rpx;border-radius: 100%; border:8rpx solid #ff5556;" device-position="front"></camera><button class="bt" style="background-color: {{themColor}}; width: 550rpx;" bind:tap="getPicBase">登录</button>
</view>

wxss

.title{text-align: center;font-size: 40rpx;margin-bottom: 100rpx;
}
.camera1{margin: 200rpx auto;height: 600rpx;width: 500rpx;border-radius: 20rpx;
}

js
注意
文档资料
在这里插入图片描述
在这里插入图片描述

  //刷脸登录getPicBase(){const baseOld=wx.getStorageSync('Base64')if(baseOld==''){wx.showToast({title: '还未录入人脸',icon:'error'})}else{const ctx=wx.createCameraContext()face.getPicFromcenavm(ctx).then(res1=>{wx.request({            //请求百度api接口url: 'https://aip.baidubce.com/oauth/2.0/token',data: {               //请求时传送我们的账号信息进行认证grant_type: 'client_credentials',client_id: '',//APIKeyclient_secret: '',//SecretKey},success(res) {let token = res.data.access_token wx.request({url: 'https://aip.baidubce.com/rest/2.0/face/v3/match?access_token='+token,method: 'post',   //请求固定为post请求header: {"Content-type": "application/json"},data:JSON.stringify([{"image":res1,"image_type": "BASE64","face_type": "LIVE"},{"image":baseOld,"image_type": "BASE64","face_type": "LIVE"}]),success:(res)=> {console.log(res.data)if(res.data.result.score>90){//执行后续操作}else{wx.showToast({title: res.data.error_msg,icon:'error'})}}})}})}},

🎉写在最后

🍻伙伴们,如果你已经看到了这里,觉得这篇文章有帮助到你的话不妨点赞👍或 Star ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

你的支持就是我更新的最大动力💪~
在这里插入图片描述

相关文章:

微信小程序实现人脸识别登录

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生…...

atoi函数的概念和使用案例

atoi 函数是 C 语言标准库中的一个函数&#xff0c;它用于将字符串转换为整数。atoi 的名称是 “ASCII to integer” 的缩写。该函数定义在 <stdlib.h> 头文件中。 概念 atoi 函数会从字符串的开始位置开始转换&#xff0c;直到遇到第一个非数字字符或遇到字符串结束符…...

Mysql--运维篇--日志管理(连接层,SQL层,存储引擎层,文件存储层)

MySQL提供了多种日志类型&#xff0c;用于记录不同的活动和事件。这些日志对于数据库的管理、故障排除、性能优化和安全审计非常重要。 一、错误日志 (Error Log) 作用&#xff1a; 记录MySQL服务器启动、运行和停止期间遇到的问题和错误信息。 查看&#xff1a; 默认情况下…...

poi处理多选框进行勾选操作下载word以及多word文件压缩

一、场景 将数据导出word后且实现动态勾选复选框操作 eg: word模板 导出后效果&#xff08;根据数据动态勾选复选框&#xff09; 二、解决方案及涉及技术 ① 使用poi提供的库进行处理&#xff08;poi官方文档&#xff09; ② 涉及依赖 <!-- excel工具 --><depen…...

QT 键值对集合QMap

在QT中&#xff0c;可以使用QMap作为键值对的集合。QMap是Qt的一个模板类&#xff0c;它存储了键值对&#xff0c;并且可以通过键来快速查找值。 导入 #include <QMap> 以下是一些使用QMap的方法&#xff1a; 1.创建并初始化一个 QMap<int, QString> UserDepa…...

NetMQ里Push-Pull模式,消息隔一收一问题小记

问题&#xff1a; 本机环境下&#xff0c;在push端向pull端发送消息的过程中&#xff0c;发现同一个进程里的pusher和puller代码&#xff0c;可以准确地完成收发&#xff1b; 然而&#xff0c;将代码放在两个进程里&#xff0c;将pusher发送的消息从1计数&#xff0c;puller端竟…...

见微知著:Tripo 开创 3D 生成新时代

关于 VAST VAST 成⽴于 2023 年 3 ⽉,是⼀家致⼒于通⽤ 3D 大模型研发的 AI 公司,公司⽬标是通过打造⼤众级别的 3D 内容创作⼯具,建⽴ 3D 的 UGC 内容平台,让基于 3D 的空间成为⽤户体验、内容表达、提升新质⽣产⼒的关键要素。 2024 年初,VAST 推出数⼗亿参数级别的 3…...

消息队列与中间件:Java的秘密传输带

消息队列与中间件技术是分布式系统中的重要组件&#xff0c;它们主要解决应用耦合、异步消息处理、流量削峰等问题&#xff0c;并实现高性能、高可用、可伸缩和最终一致性的架构。 2.1 消息队列的基本概念 消息队列是一种应用程序间传递消息的技术&#xff0c;它允许应用程序发…...

Bytebase 3.1.0 - 通过 Google / GitHub SSO 功能开放给专业版

&#x1f680; 新功能 支持在 PostgreSQL DML/DDL 工单中选择执行角色。 在项目设置中增加 PostgreSQL 数据库租户模式配置选项。 在数据库页面和 SQL 编辑器为 ORACLE 数据库展示 package 元数据。 支持为环境配置颜色&#xff0c;方便区分。 新增管理员可关闭数据导出…...

EdgeOne安全专项实践:上传文件漏洞攻击详解与防范措施

靶场搭建 当我们考虑到攻击他人服务器属于违法行为时&#xff0c;我们需要思考如何更好地保护我们自己的服务器。为了测试和学习&#xff0c;我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料&#xff0c;供大家学习和参考&#xff0…...

k8s部署rocketmq踩坑笔记

给团队部署一个rocketmq4.8.0. k8s上部署的broker&#xff0c;注册到nameserver上是自己的pod ip&#xff0c;导致本机连接到的broker的pod ip&#xff0c;这个ip k8s集群外的机器是无法联通的。 nameserver上注册的是这个pod ipv4 尝试将broker的配置brokerIP1修改为注册到na…...

Docker 通过创建Dockerfile 部署Jar包

1、创建Dockerfile 首先确保centos 安装docker&#xff0c;参考docker安装-CSDN博客 自己找个目录来存放Dockerfile mkdir Dockerfile 2、vim Dockerfile # 使用 OpenJDK 17 基础镜像 FROM jre17:v1.0# 设置工作目录 WORKDIR /app# 暴露端口 EXPOSE 8093# 设置容器内日志目录…...

shell脚本练习

题目 1、编写一个shell 脚本&#xff0c;检测 /tmp/size.log 文件。如果存在&#xff0c;显示它的内容&#xff1b;不存在则创建一个文件&#xff0c;将创建时间写入。 2、编写一个shell 脚本,实现批量添加 20个用户&#xff0c;用户名为user1-20&#xff0c;密码为user 后面跟…...

【计算机网络】lab4 Ipv4(IPV4的研究)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...

Python Json格式数据处理

示例&#xff1a;查看和编辑 JSON 文件的 Python 程序 import json from pprint import pprintdef load_json(file_path):"""加载并解析 JSON 文件。:param file_path: JSON 文件路径:return: 解析后的 JSON 对象&#xff08;字典或列表&#xff09;"&quo…...

【声音场景分类--论文阅读】

1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段&#xff0c;主要重点是建立一…...

Web前端界面开发

前沿&#xff1a;介绍自适应和响应式布局 自适应布局&#xff1a;-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果&#xff0c;随着我们的屏幕大小而发生适配的效果&#xff08;类似等比例&#xff09; 如&#xff1a;rem适配 和 vw/vh适配 …...

模式识别与机器学习

文章目录 考试题型零、简介1.自学内容(1)机器学习(2)机器学习和统计学中常见的流程(3)导数 vs 梯度(4)KL散度(5)凸优化问题 2.基本概念3.典型的机器学习系统4.前沿研究方向举例 一、逻辑回归1.线性回归2.逻辑回归3.随堂练习 二、贝叶斯学习基础1.贝叶斯公式2.贝叶斯决策3.分类器…...

eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)

ACL实验&#xff08;Access Control List访问控制列表&#xff09;是一种基于包过滤的访问控制技术&#xff0c;它可以根据设定的条件对接口上的数据包进行过滤&#xff0c;允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…...

STM32 I2C硬件配置库函数

单片机学习&#xff01; 目录 前言 一、I2C_DeInit函数 二、I2C_Init函数 三、I2C_StructInit函数 四、I2C_Cmd函数 五、I2C_GenerateSTART函数 六、I2C_GenerateSTOP函数 七、I2C_AcknowledgeConfig函数 八、I2C_SendData函数 九、I2C_ReceiveData函数 十、I2C_Sen…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...