vue 基于获取摄像头权限 拍照的人脸识别技术

本文探讨了在Vue项目中如何获取摄像头权限进行拍照,并结合人脸识别功能。文章讲解了前端和后端的实现思路,讨论可能遇到的问题,并提供了基于Vue的初版代码供参考。

为什么要做这个呢?

不同用户具有不同的权限 如果管理员用户被别人知晓了怎么办? 为了解决该用户 账号密码泄露导致的误操作。

前端实现思路是什么呢?

前端思想是获取摄像头权限 通过canvas 获取base64图片 然后转为二进制文件流 通过FormData(form表单提交)和后端交互 的方式进行识别

后端的实现思路呢?

创建一个sql 里面存一些有权限的人员信息包含照片等 用上传的照片和sql里面的数据进行对比人脸识别 进而知道进入当前系统的人是否具有某些权限 当然为了界面友好还需要有权限人员库用于展示

会遇到什么问题?

中间遇到了低版本浏览器无法使用canvas的问题 所以此方法只支持最新的浏览器
上传至服务器时出现http的谷歌因为安全设置问题 导致无法获取摄像机资源 需用https解决 或通过配置chrome安全限制解决 详情可以看我的下个文章

代码在哪里啊?(基于vue的初版代码)

调用方法

		<living-validation :response="livingValidationResponse" v-if="livingValidationResponse.isShowDialog" @realAddNewTask = "realAddNewTask"></living-validation>
	data设置如下
	livingValidationResponse:{
		isShowDialog: false,
		title: "活体检测",
		callbackName:"",
		item: {}	
	},

就在下面了 哈哈

<template>
	<div>
		<add-dialog :response="response" v-if="response.isShowDialog" ref="addDialogRef" @closeDialog="closeDialog">
			<div slot="libBox" class="libBox">
				<div class="auto">
					<video id="video" width="480" height="320" autoplay></video>
					<canvas id="canvas" width="480" height="320" style="display: none;"></canvas>
					<img src="/static/images/body_default.png" id="img" width="480" height="320" style="margin-left: 20px;">
					<!-- <img src="" id="img" width="480" height="320" style="margin-left: 20px;"> -->
					<div>
						<button id="capture" title="点击进行拍照" @click="takePhoto">拍照</button>
					</div>
					<div>
						<button id="sure" title="是否用这张图片进行验证" @click="sure">确认</button>
					</div>
				</div>
			</div>
		</add-dialog>
		<loading :loadingStatus="loadingStatus"></loading>
		
	</div>
</template>
<script>
	import loading from "src/biz_components/loading/loading.vue";
	import addDialog from "biz_components/dialog.vue";
	export default {
    
    
		name: "livingvalidation",
		props: ["response"],
		/*	authuor wenbin by 2019-03-26
			response:{
			isShowDialog: false, //是否展示
			title: "活体检测", //标题
			item: {}	需要传入数据用于子组件使用
		},*/
		components: {
    
    
			addDialog: addDialog,
			loading:loading
		},
		data: function() {
    
    
			return {
    
    
				File:"", //上传图片文件
				streamPicture:"",
				loadingStatus: {
  
在uni-app里实现人脸识别自动开启前置摄像头自动获取快照,可借助uni-app的摄像头API。以下是实现该功能的详细步骤与示例代码: ### 1. 配置页面权限 在`manifest.json`文件里添加摄像头权限,以保证应用能正常使用摄像头。 ```json { "mp-weixin": { "permission": { "scope.camera": { "desc": "你的应用需要使用摄像头进行人脸识别" } } }, "app-plus": { "permissions": { "CAMERA": { "description": "应用需要使用摄像头进行人脸识别" } } } } ``` ### 2. 编写页面代码 在页面的`vue`文件中,使用`<camera>`组件开启前置摄像头且在相应的按钮点击事件或者定时任务里调用拍照方法。 ```vue <template> <view> <camera :device-position="'front'" ref="cameraRef" style="width: 100%; height: 300px;"></camera> <button @click="takePhoto">拍照</button> </view> </template> <script> export default { data() { return { cameraRef: null }; }, onReady() { this.cameraRef = this.$refs.cameraRef; // 可以在这里添加定时器,实现自动拍照 // setInterval(this.takePhoto, 5000); // 每5秒自动拍照一次 }, methods: { takePhoto() { this.cameraRef.takePhoto({ quality: 'high', success: (res) => { console.log('拍照成功', res.tempImagePath); // 这里可以将图片路径发送到后端进行人脸识别 // 后续操作可参考引用[1]中对图片的处理步骤 }, fail: (err) => { console.error('拍照失败', err); } }); } } }; </script> ``` ### 3. 处理拍照结果 在`takePhoto`方法的成功回调里,能够获取到拍摄照片的临时路径`res.tempImagePath`,之后可依据引用[1]的内容对图片进行格式判断、文件大小计算以及base64加密等操作,再将处理后的图片发送到后端的人脸识别接口。 ### 4. 实现自动拍照 若要实现自动拍照功能,可在`onReady`生命周期函数中添加定时器,定时调用`takePhoto`方法。例如,每5秒自动拍照一次: ```javascript onReady() { this.cameraRef = this.$refs.cameraRef; setInterval(this.takePhoto, 5000); // 每5秒自动拍照一次 } ```
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值