赞
踩
思路:
打开摄像头获取视频流数据
+通过canvas截取视频流并绘制图片
<template> <div> <!-- video标签,用于播放视频 --> <video ref="video"></video> <!-- 用于视频截图,到时候上传到后端 --> <canvas id="canvasCamera"></canvas> <!-- 三个按钮 --> <button @click="OpenCamera">打开摄像头</button> <button @click="CloseCamera">关闭摄像头</button> <button @click="setImage">拍照</button> </div> </template> <script> export default { data() { return { // 画布以及画布内容 canvas: null, context: null, }; }, mounted() { // 页面刚加载的时候,设置画布。 this.canvas = document.getElementById('canvasCamera'); this.context = this.canvas.getContext('2d'); }, methods: { // 拍照 绘制图片 setImage() { // 通过canvas拍照。第一个参数可以是video this.context.drawImage( this.$refs.video, 0, 0, 100, 100, ); }, // 调起摄像头的权限,权限通过后,开始录像。 OpenCamera() { navigator.mediaDevices .getUserMedia({ video: true, }) .then((stream) => { // 摄像头开启成功 // 把stream流赋值给video,让video播放视频。 this.$refs.video.srcObject = stream; this.$refs.video.play(); }) .catch(err => { console.log(err); }); }, // 关闭摄像头 CloseCamera() { this.$refs.video.srcObject.getTracks()[0].stop(); }, }, }; </script> <style scoped> video { width: 100%; height: 300px; } canvas { width: 700px; height: 300px; } button { width: 100px; height: 40px; position: relative; bottom: 0; left: 0; background-color: rgb(57, 2, 255); } </style>
目的: 获取数据库中的人脸表中的所有数据(List)。遍历这个数据,拿着前端传来的照片与这个List中的item做比较 (比较的工具可以用阿里或者腾讯等人脸识别工具) ,如果比较成功,则代表人脸表中有这个人的信息,则通过。否则不行。
使用第三方工具(阿里、腾讯)的目的就是比较数据库人脸表与当时拍的照片是否是一个人。
// 前端传来的image,比如是base64的 String imageBase = ''; // 后端获取人脸表的数据List List<Face> faceList = []; // 循环遍历 for (Face face : faceList) { // 调用第三方库,进行人脸对比 Boolean faceResult = faceAlibabaServer.faceCompare(face.getFaceBase(), imageBase); if(faceResult){ // 验证通过,人脸库中有此人 return success }else{ // 验证不通过,人脸库中没有此人 return false } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。