IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> uniapp + vue3微信小程序开发(2)活体人脸识别 -> 正文阅读

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

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

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

1、uniapp camera组件拍照 takePhoto

2、uniapp camera组件录像 startRecord

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

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

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

<template>
	<view class="face-detection">
		<view class="live-father">
			<camera class="camera-box" device-position="front" flash="off" @initdone="initdone" @stop="stop" @error="error">
				<cover-view class="camera-tip" v-if="showTip">{{8 - imgList.length}}</cover-view>
			</camera>
		</view>
		<button class="bottom" type="primary" :disabled="status!==0" @click="startFace">{{statusFilter()}}</button>
	</view>
</template>

<script setup>
	import {
		ref,
		reactive,
		computed,
		getCurrentInstance,
		onBeforeUnmount
	} from 'vue'
	import { onReady, onHide, onError } from '@dcloudio/uni-app'
	const { proxy } = getCurrentInstance()
	const context = ref(null)
	onHide(() => {
		if (timer.value) {
			clearInterval(timer.value)
			timer.value = null
			showTip.value = false
		}
	})
	onError(() => {
		if (timer.value) {
			clearInterval(timer.value)
			timer.value = null
			showTip.value = false
		}
	})
	onBeforeUnmount(() => {
		if (timer.value) {
			clearInterval(timer.value)
			timer.value = null
			showTip.value = false
		}
	})
	const timer = ref(null)
	const imgList = reactive([])
	const showTip = ref(false)
	/**
	 * 相机初始化完成
	 */
	const initdone = () => {
		console.log('相机初始化完成');
		status.value = 0
	}
	const startFace = () => {
		status.value = 1
		showTip.value = true
		timer.value = setInterval(() => {
			if (imgList.length >= 8) {
				clearInterval(timer.value)
				timer.value = null
				status.value = 2
				showTip.value = false
				console.log('正在上传...');
				return
			}
			takePhoto()
		}, 1000)
	}
	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 = () => {
		const ctx = uni.createCameraContext();
		ctx.takePhoto({
			quality: 'high',
			success: (res) => {
				imgList.push(res.tempImagePath)
			},
			fail: () => {
				console.log('fail');
			}
		});
	}
	/**
	 * 摄像头在非正常终止时触发,如退出后台等情况
	 */
	const stop = (e) => {
		console.log("stop:" + e.detail);
	}
	/**
	 * 用户不允许使用摄像头时触发
	 */
	const error = (e) => {
		console.log("error:" + e.detail);
	}
</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;
				.camera-tip{
					text-align: center;
					line-height: 600rpx;
					height: 600rpx;
					font-size: 70rpx;
					font-weight: bold;
					color: #fff;
				}
			}
		}
		.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>

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:27:30  更:2022-04-27 11:28:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:26:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码