uniapp项目—h5端人脸采集功能实现

需求

uniapp写的h5应用,放到微信公众号里使用,需要采集人脸信息,传到后台调阿里云实人认证接口

思路

1.如何调用移动端设备摄像头
2.使用tracking.js捕捉人脸
3.对人脸进行拍照,描绘到canvas画布上面
4.将照片转换成base64格式
5.调用后台接口。

代码以及注释

1.下载tracking.js 网址:https://trackingjs.com 将需要的js文件复制到静态资源文件夹
源下载文件
f放到uniapp项目中

代码实现

<template>
	<view>
		<view v-show="showContainer" class="face-capture">
			<text class="tip">请保持人像在取景框内</text>
			<video id="faceVideo" :autoplay="true" object-fit="cover" :show-mute-btn="false" :show-play-btn="false"
				:show-progress="false"></video>
			<canvas id="refCanvas" :width="300" :height="300"></canvas>
			<text class="contentp">{
   {
    scanTip }}</text>
		</view>
		<view v-if="!showContainer" class="img-face">
			<img class="imgurl" :src="imgUrl" />
		</view>
	</view>
</template>
<script>
	import tracking from "@/static/tracking/tracking-min.js";
	import "@/static/tracking/face-min.js";
	import "@/static/tracking/eye-min.js";
	import "@/static/tracking/mouth-min.js";
	export default {
   
		data() {
   
			return {
   
				URL: null,
				streamIns: null, // 视频流
				showContainer: true, // 显示
				tracker: null,
				tipFlag: false, // 提示用户已经检测到
				flag: false, // 判断是否已经拍照
				context: null, // canvas上下文
				removePhotoID: null, // 停止转换图片
				scanTip: "人脸识别中...", // 提示文字
				imgUrl: "",
				canvas: null,
				trackertask: null
			};
		},
		mounted() {
   
			this.initGetUserMedia();
		},
		methods: {
   
			async initGetUserMedia() {
   
				const constraints = {
   
					video: {
   
						width: 300,
						height: 300
					}
				};
				try {
   
					const stream = await navigator.mediaDevices.getUserMedia(constraints);
					this.success(stream);
				} catch 
UniApp实现H5页面的人脸采集功能通常会涉及使用WebRTC技术配合前的getUserMedia API。以下是大致的步骤: 1. **引入依赖**: 首先,需要在项目中安装必要的库,如uni-app提供的`@dcloudio/web-view-component`用于嵌入webview,以及可能的第三方人脸检测库,例如`face-api.js`。 ```javascript // 在main.js或app.vue中 import { WebView } from '@dcloudio/web-view-component'; import FaceAPI from 'face-api.js'; ``` 2. **请求权限**: 使用`getUserMedia`获取用户的摄像头权限,允许访问用户的视频流。 ```javascript FaceAPI.whenReady().then(async () => { navigator.mediaDevices.getUserMedia({ video: true }) .then((stream) => { // 将视频流绑定到canvas元素上 const video = document.createElement('video'); video.srcObject = stream; canvas.getContext('2d').drawImage(video, 0, 0); }); }); ``` 3. **人脸检测**: 调用`face-api.js`的`detectAllFaces()`函数,在视频帧上检测人脸。 ```javascript const canvas = document.getElementById('canvas'); const displaySize = { width: canvas.width, height: canvas.height }; let faceResults; FaceAPI.detectAllFaces(video, displaySize) .then(detectedFaces => { faceResults = detectedFaces; // 根据人脸数据处理后续逻辑,比如标记、识别等 }); ``` 4. **处理结果**: 获取到人脸信息后,你可以进行进一步的操作,如显示人脸特征,或者将数据发送到服务器。 ```javascript detectedFaces.forEach(face => { // 打印或展示人脸位置和关键点 console.log(`Face at (${face.boundingBox.top}, ${face.boundingBox.left})`); }); // 如果有实时反馈需求,可以更新UI显示或触发其他操作 ```
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值