uniapp开发微信小程序-人脸采集功能、人脸检测功能

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

适用于人脸采集,人脸检测等功能。
uniapp人脸采集,uni-app,人脸检测,人脸识别,uni-app,小程序,图像处理

逻辑就是先调起摄像头,获取到实时帧数据之后,使用wx.faceDetect进行人脸检测,检测到正面的人脸就可以拍照上传给后端了

<template>
	<view class="content">
			<view class="camera-box" v-if="showcamera == 1">
				<view class="camera-bg-box"><camera class="camera" device-position="front" flash="off" resolution="low"></camera></view>
				<view v-show="tipsText" class="camera-tip">{{ tipsText }}</view>
			</view>
	</view>
</template>
<script>
export default {
	data() {
		return {
			tipsText: '',
		};
	},

	onShow() {
		// 初始化相机引擎
		this.initData();
	},

	methods: {
		// 初始化相机引擎
		initData() {
			let that = this;
			// #ifdef MP-WEIXIN
			// 1、初始化人脸识别
			wx.initFaceDetect();
			// 2、创建 camera 上下文 CameraContext 对象
			that.cameraEngine = wx.createCameraContext();
			// 3、获取 Camera 实时帧数据
			const listener = that.cameraEngine.onCameraFrame(frame => {
				// 4、人脸识别,使用前需要通过 wx.initFaceDetect 进行一次初始化,推荐使用相机接口返回的帧数据
				wx.faceDetect({
					frameBuffer: frame.data,
					width: frame.width,
					height: frame.height,
					enablePoint: true,
					enableConf: true,
					enableAngle: true,
					enableMultiFace: true,
					success: faceData => {
						let face = faceData.faceInfo[0];
						//人脸位置校验
						var centerWidth = 150;
						var centerHeight = 150;

						if (faceData.x == -1 || faceData.y == -1) {
							that.tipsText = '检测不到人';
						}

						if (faceData.faceInfo.length > 1) {
							that.tipsText = '请保证只有一个人';
						} else {
							const { pitch, roll, yaw } = face.angleArray;
							const standard = 0.3;

							if (Math.abs(pitch) >= standard || Math.abs(roll) >= standard || Math.abs(yaw) >= standard) {
								that.tipsText = '请平视摄像头';
							} else if (
								face.x < (frame.width - centerWidth) / 2 ||
								face.x > (frame.width - centerWidth) / 2 + centerWidth ||
								face.y < (frame.height - centerHeight) / 2 ||
								face.y > (frame.height - centerHeight) / 2 + centerHeight
							) {
								this.tipsText = '请将人脸对准中心位置';
							} else if (
								face.confArray.global <= 0.8 ||
								face.confArray.leftEye <= 0.8 ||
								face.confArray.mouth <= 0.8 ||
								face.confArray.nose <= 0.8 ||
								face.confArray.rightEye <= 0.8
							) {
								that.tipsText = '请勿遮挡五官';
							} else {
								listener.stop();
								that.tipsText = '即将拍照,请保持!';
								setTimeout(function() {
									that.handleTakePhotoClick();
								}, 2000);
								return;
								let time = 3;
								that.tipsText = time + '秒后拍照,请保持!';
								let timer3 = setInterval(function() {
									time--;
									if (time <= 0) {
										clearInterval(timer3);
										// 拍照
										return that.handleTakePhotoClick();
									} else {
										that.tipsText = time + '秒后拍照,请保持!';
									}
								}, 1000);
								// listener.stop();
							}
						}
					},
					fail: err => {
						if (err.x == -1 || err.y == -1) {
							that.tipsText = '检测不到人';
						} else {
							that.tipsText = err.errMsg || '网络错误,请退出页面重试';
						}
					}
				});
			});

			// 5、开始监听帧数据
			listener.start();
			// #endif
		},

		// 拍照
		handleTakePhotoClick() {
			this.tipsText = '正在上传...';

			// 检测是否授权相机
			uni.getSetting({
				success: res => {
					if (!res.authSetting['scope.camera']) {
						this.isAuthCamera = false;
						uni.openSetting({
							success: res => {
								if (res.authSetting['scope.camera']) {
									this.isAuthCamera = true;
								}
							}
						});
					}
				}
			});

			this.cameraEngine.takePhoto({
				quality: 'low',
				success: ({ tempImagePath }) => {
					let mybase64 = wx.getFileSystemManager().readFileSync(tempImagePath, 'base64');

					// 调用后端接口进行人脸识别,使用base64图片格式
					// 后端人脸识别可以使用阿里云,百度智能云这些
				}
			});
		}
	}
};
</script>
.content {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	
	.camera-box {
		position: relative;
		width: 100%;
		height: 100%;
	}
	
	.camera-bg-box{
		position: relative;
		width: 100%;
		height: 100%;
		overflow: hidden;
		
		&::after {
			content: '';
			position: absolute;
			left: 50%;
			top: 50%;
			transform: translateX(-50%) translateY(-50%);
			border-radius: 100%;
			width: 600rpx;
			height: 600rpx;
			border: 1000rpx solid rgba(0, 0, 0, 0.5);
		}
	}

	.camera {
		width: 100%;
		height: 100%;
		border-top: 200rpx solid  black;
		border-bottom: 200rpx solid  black;
		box-sizing: border-box;
	}

	.camera-tip {
		position: absolute;
		bottom: 220rpx;
		left: 50%;
		transform: translateX(-50%);
		.text-40-fff-600();
	}
}

扫码加q群
uniapp人脸采集,uni-app,人脸检测,人脸识别,uni-app,小程序,图像处理文章来源地址https://www.toymoban.com/news/detail-522601.html

到了这里,关于uniapp开发微信小程序-人脸采集功能、人脸检测功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uni-app开发微信小程序

    编辑器:HubilderX 运行环境:微信开发者工具 技术栈:uni-app + vue + uView + uCharts + LeanCloud 创建微信小程序项目时,我才用了vue前端框架 PS:用的是HbuilderX编辑器 1. 注册微信小程序 注册完后,获取微信小程序的AppID,并在manifest.json文件配置; 2. 导入uView和uCharts组件库 使用uni-

    2024年02月16日
    浏览(89)
  • 前端Uni-app开发微信小程序|微信小程序手机商城

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月12日
    浏览(60)
  • 如何使用uni-app开发微信小程序

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码,可发布到 iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。 详细的 uni-app 官方文档,请翻阅https://uniapp.dcloud.net.cn uni-app 官方推荐使用 HBuilderX 来开发 uni-ap

    2024年02月10日
    浏览(121)
  • UNI-APP开发微信小程序的基本流程

    需提前准备的工具:HBuilder X ,微信开发者工具 登录小程序官网,如已有账号,则直接登录。 无账号,申请完账号后,进入账号填写相关信息,获取appId。 获取appId:【开发-开发管理-开发设置】 【文件】-【新建】-【项目】: 点击【manifest.json】,将微信小程序的配置信息填

    2024年02月06日
    浏览(50)
  • uni-app 开发微信小程序 自动化编译/启动项目

          最近开发一个uni-app的小程序项目,因为习惯使用vscode 而项目不得不借助hbuderx 运行,微信开发工具调试,偶尔还需要使用 ios模拟器, 8g内存的mac 就变的异常卡顿,所以就研究了下通过npm命令去编译、 运行等工程化配置, 这样就不用运行hbuderx 减少内存使用,顺便 

    2024年02月07日
    浏览(57)
  • VUE(uni-app框架)开发微信小程序③-显示隐藏

    uni-app控制显示隐藏的方式有两种,【v-if】 和   【v-show】 v-if:通过控制虚拟dom树的节点来达到控制式样的显示和隐藏,当参数为false的时候,该节点被删掉,当为true的时候则显示。 v-show:通过css样式中的dispaly:none来控制元素的显示和隐藏 代码如下: 显示效果如下:  通

    2024年02月16日
    浏览(59)
  • uni-app使用HBuilder X工具和微信小程序工具开发微信小程序

    选择uni-app的原因是什么 需要使用到的工具 关于HBuilder X工具和微信小程序工具的介绍  怎么下载HBuilder X工具和微信小程序工具  如何使用HBuilderX工具 如何使用微信小程序工具  结尾 什么是uni-app uni-app是一个使用vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到

    2024年02月08日
    浏览(69)
  • 【用vue开发微信小程序】(uni-app)(自用,不推荐参考)

    以前自己只练习过开发些原生微信小程序,改用uni框架试试,简单记录下流程以及遇到的些问题。(记的东西有点杂,自用 🙏看起来繁杂请见谅) (1)先全局安装 npm install -g @vue/cli (只需要安装一次,安装过后就不用安装了) PS : 直接npm install -g@vue/cli 安装 可能会报错

    2024年02月09日
    浏览(66)
  • uni-app开发微信小程序 web-view通讯

    最近开发了一个微信小程序嵌套vue页面 vue页面 有时候会使用到微信小程序的api 但是有的api他h5是不支持的  官方文档中提供的两种方法 @message 内嵌的h5页面不支持 Window的postMessage 在h5端使用没啥问题,这该死的uni-app页面不管怎么弄都会报那个window的错  还是我太菜了。。。

    2024年02月19日
    浏览(64)
  • uniapp开发微信小程序订阅消息

    微信发送订阅消息接口文档 1.1、获取模板id及模板字段名称 注意点: 消息字段的类型是有校验的,充电度数是number类型,则传入的string中不能使用0.00度。则会报错。 2.1、编写消息模板配置文件 2.2、编写订阅消息请求对象 2.3、编写充电开始订阅消息模板对象 2.2.1、DataEntry

    2024年02月16日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包