uniapp + vue3微信小程序开发(2)活体人脸识别

这篇具有很好参考价值的文章主要介绍了uniapp + vue3微信小程序开发(2)活体人脸识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最新提示:微信小程序上线前审核,要求你必须使用微信自带活体识别的sdk,自己开发的不会被允许通过,望周知!

这相信有很多小程序都会用,为啥呢?因为小程序压根不得给你用户身份证信息,所以替换做法就是你让用户上传身份证照片,然后你在人脸识别,判断是同一个人后,再将你信息录入数据库

1、在小程序端的活体识别方法

1、uniapp camera组件拍照 takePhoto

2、uniapp camera组件录像 startRecord

vue3. 人脸识别组件,uniapp,vue.js,微信小程序

3、uniapp live-pusher组件 视频推流方式

2、拍照方式实现人脸识别

因为项目要得紧,所以我这里使用最简单的拍照,拍八张,定时器每秒一张(后端用的是百度人脸识别api,有照片活体识别和视频活体识别),然后一起传给后端,不过更好的做法是拍一张传一张,成功则完成,识别失败那就再调拍照api,总的时间不超过十秒,在用户端看来是没有任何异常的。文章来源地址https://www.toymoban.com/news/detail-610945.html

<template>
	<view class="face-detection">
		<view class="live-father">
			<view v-if="status==-1" class="camera-box">
				<view class="camera-tip">
					<image class="controls-play" src="../../static/img/own/face.png" mode=""></image>
				</view>
			</view>
			<camera v-else class="camera-box" device-position="front" flash="off" @initdone="initdone" @stop="stop"
				@error="error">
				<cover-view class="camera-tip">
					<cover-image class="controls-play" src="../../static/img/own/face.png"></cover-image>
				</cover-view>
			</camera>
		</view>
		<button class="bottom" type="primary" :disabled="status==1"  @click="startFace">{{statusFilter()}}</button>
	</view>
</template>

<script setup>
	import {
		ref,
		reactive,
		computed,
		getCurrentInstance,
		onBeforeUnmount,
		watch
	} from 'vue'
	import {
		onLoad,
		onReady,
		onHide,
		onError
	} from '@dcloudio/uni-app'
	import { pullAuth } from '@/utils'
	const {
		proxy
	} = getCurrentInstance()
	const context = ref(null)
	onHide(() => {
		photoStatus(3)
	})
	onError(() => {
		photoStatus(3)
	})
	onBeforeUnmount(() => {
		console.log(1);
		photoStatus()
	})
	const flag = ref(0)
	const time = ref(0) // 重新调用接口限制为10次
	const ctx = ref(null) // 相机对象
	const realUser = reactive({
		name: '',
		idNumber: ''
	})
	/**
	 * 相机初始化完成
	 */
	const initdone = () => {
		console.log(2);
		photoStatus()
	}
	const startFace = () => {
		pullAuth('scope.camera', firstSuccess, firstFail)
	}
	/**
	 * 相机状态回调
	 */
	const photoStatus = (type = 0) => {
		status.value = type
	}
	const status = ref(-1) // -1 => 相机未就绪,申请摄像头权限, 0 => 相机已就绪,但未开始, 1 => 进行中, 2 => 已结束, 3 => 重新识别
	const statusFilter = () => {
		switch (status.value) {
			case -1:
				return '开始识别'
			case 0:
				return '开始识别'
			case 1:
				return '正在识别中...'
			case 2:
				return '识别完成'
			case 3:
				return '重新识别'
			default:
				return '开始识别'
		}
	}
	/**
	 * 拍照
	 */
	const takePhoto = () => {
		time.value++
		photoStatus(1)
		ctx.value.takePhoto({
			quality: 'high',
			success: (result) => {
				proxy.$api.user.faceRecognition({
					file: result.tempImagePath,
					userName: realUser.name,
					userNo: realUser.idNumber
				}).then(res => {
					if (res.code == 200) {
						uploadId()
					}
				}).catch(e => {
					flag.value = Date.now()
				})
			},
			fail: () => {
				console.log('fail');
			}
		});
	}
	watch(flag, val => {
		if (time.value >= 10) {
			uni.showToast({
				title: '人脸识别失败,请重试',
				icon: 'error'
			})
			photoStatus(3)
			time.value = 0
		} else {
			takePhoto()
		}
	})
	const uploadId = () => {
		proxy.$api.user.updateUser({
			userName: realUser.name,
			userNo: realUser.idNumber,
			editType: 1,
			id: uni.getStorageSync('id')
		}).then(res => {
			if (res.code == 200) {
				uni.setStorageSync('idCard', 1)
				uni.navigateTo({
					url: './userInfo'
				})
			}
		}).catch(e => {
		})
	}
	/**
	 * 摄像头在非正常终止时触发,如退出后台等情况
	 */
	const stop = (e) => {
		photoStatus(3)
	}
	/**
	 * 用户不允许使用摄像头时触发
	 */
	const error = (e) => {
		console.log(3);
		photoStatus()
	}
	const firstSuccess = () => {
		uni.showLoading({
			title: '初始化...'
		})
		photoStatus()
		if (!ctx.value) {
			ctx.value = uni.createCameraContext();
		}
		setTimeout(() => {
			uni.hideLoading()
			takePhoto()
		}, 500)
	}
	const firstFail = () => {
		photoStatus(-1)
	}
	onLoad((options) => {
		realUser.name = options.name
		realUser.idNumber = options.idNumber
	})
</script>

<style lang="scss" scoped>
	.face-detection {
		background-color: #F3F3F3;
		height: 100vh;
		box-sizing: border-box;
		padding: 30rpx;
		position: relative;

		.live-father {
			width: 600rpx;
			height: 600rpx;
			border-radius: 50%;
			margin: 100rpx auto;
			.camera-box {
				width: 100%;
				height: 100%;
				border-radius: 50%;
				position: relative;
				background-image: linear-gradient(to right, #acb6e5, #86fde8);
				.camera-tip {
					text-align: center;
					line-height: 600rpx;
					font-size: 70rpx;
					font-weight: bold;
					color: #fff;
					.controls-play{
						width: 390rpx;
						height: 480rpx;
						position: absolute;
						top: 50%;
						left: 50%;
						z-index: 99;
						transform: translate(-50%, -50%);
					}
				}
			}
		}

		.bottom {
			margin: 60rpx auto 0;
			width: 690rpx;
			height: 98rpx;
			background-color: #CA2915;
			border-radius: 16rpx;
			font-size: 34rpx;
			font-weight: 400;
			color: #FFFFFF;
			line-height: 98rpx;
			text-align: center;
		}
	}
</style>

到了这里,关于uniapp + vue3微信小程序开发(2)活体人脸识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过Dlib和opencv实现人脸识别和活体检测

    目录 一、准备工作 1.1 需要的库 1.2准备需要的文件和图片 1.3 测试程序 二、人脸识别开发 2.1 录入自己的人脸信息 2.2 提取录入的人脸特征 2.3 实时捕获人脸并进行识别 三、活体检测 3.1 眨眼检测 3.2 张嘴检测 3.3 摇头检测 下面这些是我突发奇想想做来玩玩,就在github上下载了

    2023年04月08日
    浏览(50)
  • 测试开源C#人脸识别模块ViewFaceCore(6:视频活体检测)

      之前的文章介绍ViewFaceCore模块的FaceAntiSpoofing类支持单帧活体检测(AntiSpoofing函数)及视频活体检测(AntiSpoofingVideo函数),视频活体检测时从摄像头中抓取一帧图片进行检测,当检测结果状态为Detecting时,继续从摄像头中抓取图片,直至检测结果不为Detecting。本文中主要

    2024年01月22日
    浏览(41)
  • uni-app+vue3+vite+微信小程序开发的问题点

    目录名称不能为api,否则会出现 ├F10: PM┤ [vite] getaddrinfo ENOTFOUND rivtrust.jz-xxx.xyz ,修改为_api; vue3的全局变量挂载 或者 全局变量的引入: 或者 axios在微信小程序上使用的问题: 安装模块 出现adapter is not a function的解决方法 需要axios自定义适配器配置 整体代码request.js: un

    2024年02月13日
    浏览(81)
  • 全网最简单实用Android摄像头开发,同时预览多个摄像头,双目摄像头,同时打开手机前后摄像头(红外摄像头、人脸识别、活体检测、Android Camera、缩放、焦距、旋转、镜像、截图保存)

    如果你受够了网上那些乱七八糟的代码,你可以了解下我这个,能同时打开多个摄像头,在界面上预览,并且可以取得摄像头数据,byte[] 转为 Bitmap,保存为 jpg图片。 最近我们的某个项目要加上Android人脸识别,虽然有别人写好的“考勤”、“门口闸机”这些,但不能直接用

    2024年02月08日
    浏览(78)
  • uniapp适配微信隐私协议开发指南[uniapp+vue3+js]

    没怎么做过uniapp,找了一些文章做了出来,给大家分享一下 2023.9.15以后需要适配微信的隐私协议开发指南 目前uniapp的说法是微信小程序隐私协议开发指南 | uni-app官网 微信小程序小程序隐私协议开发指南 | 微信开放文档 微信官方提供了几个demo demo1: 演示使用  wx.getPrivacySet

    2024年02月07日
    浏览(58)
  • uniapp调用微信小程序人脸识别步骤

    template script

    2024年02月16日
    浏览(41)
  • 水果百科网站 vue+uniapp微信小程序设计与实现

    设计并实现了鲜而廉水果微信小程序。系统选用java语言,应用Springboot框架, MySQL为后台数据库。系统主要包括用户、水果百科、水果视频、交流论坛等功能模块。 经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与鲜而廉水果实现的

    2024年02月08日
    浏览(53)
  • 微信小程序开发原生与uniapp框架的选择

    针对小白来说,原生与uniapp框架两者具体选择学习那一项呢? 分析: 原生: 特点: 1、技术随官方更新而更新 2、专属于小程序开发,匹配度高 缺点: 1、不能通用其他平台小程序,兼容度底 uniapp: 特点: 1、通用大多数平台小程序 2、低项目,速成快 3、对于具有vue基础的

    2024年02月11日
    浏览(64)
  • 微信小程序开发实例——人脸识别开放平台

    综述 之前我们有讲到在做一些深度学习图像算法开发时,为了更好的将算法效果展示出来,经常需要开发一些演示Demo应用,使用在线C/S交互式应用开发(类似于百度、腾讯、阿里的开放平台)。C代表Client(客户端),S代表Server(服务端),也就是UI处理与底层处理分离的方

    2024年02月01日
    浏览(51)
  • 基于Uniapp+SSM+Vue的微信小程序设计与实现

    摘要:本文介绍了基于Uniapp+SSM+Vue技术栈开发的微信小程序——走失人员报备平台的设计、实现与优化。该平台旨在为志愿者提供便捷的走失人员信息收集与报备功能,助力社会公益事业的发展。 :Uniapp;SSM;Vue;微信小程序;走失人员报备 一、引言 介绍走失人员问

    2024年01月17日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包