vue项目中使用trackingjs人脸识别

这篇具有很好参考价值的文章主要介绍了vue项目中使用trackingjs人脸识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

新需求要做一个前端人脸登录,最终选用了trackingjs库实现识别的前端部分,在前端进行识数据采集,并把信息保存后发送给后端进行处理。文章来源地址https://www.toymoban.com/news/detail-443466.html


一、下载trackingjs库

进入官网下载之后,将文件保存在assets文件夹下
vue项目中使用trackingjs人脸识别

二、trackingjs引用

  import tracking from '@/assets/tracking/build/tracking-min.js';
  import '@/assets/tracking/build/data/face-min.js';

三、检测过程

1.初始化设置、创建实例

        // 获取实例
	    this.video = this.mediaStreamTrack = document.getElementById('video');
        this.screenshotCanvas = document.getElementById('screenshotCanvas');

        let canvas = document.getElementById('canvas');
        let context = canvas.getContext('2d');

        // 固定写法,使用人脸包
        let tracker = new window.tracking.ObjectTracker('face');
        tracker.setInitialScale(4);
        tracker.setStepSize(2);
        tracker.setEdgesDensity(0.1);
        // 摄像头初始化
        this.trackerTask = window.tracking.track('#video', tracker, {
          camera: true
        });
        tracker.on('track', function(event) {
    
        });

2.检测视频中人脸

        tracker.on('track', function(event) {

          // 检测出人脸 绘画人脸位置
          context.clearRect(0, 0, canvas.width, canvas.height);
          event.data.forEach(function(rect) {
            context.strokeStyle = '#0764B7';
            context.strokeRect(rect.x, rect.y, rect.width, rect.height);
          });
		  // 上传人脸信息
        });

3.判断上传

          // event.data.length长度为多少代表检测几张人脸
          // 人脸数为1且无锁才可以上传
          if(_this.uploadLock && event.data.length){
          //上传图片
              _this.screenshotAndUpload();
          }

4.上传人脸

      screenshotAndUpload() {
        // 上锁避免重复发送请求
        this.uploadLock = false;

        // 绘制当前帧图片转换为base64格式
        let canvas = this.screenshotCanvas;
        let video = this.video;
        let ctx = canvas.getContext('2d');
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        let base64Img = canvas.toDataURL('image/jpeg');

        // 打印出 base64Img
        console.log('base64Img:',base64Img)

        // 请求接口成功以后打开锁
        // this.uploadLock = true;
      },

5.关闭摄像头

      destroyed(){
        if(!this.mediaStreamTrack){
          return
        }
        this.mediaStreamTrack.srcObject.getTracks()[0].stop();
        this.trackerTask.stop()
      }

四、源代码

直接粘贴就可以,代码如下:

<template>
  <div>
    <div class="video-box">
      <video id="video" width="320" height="240" preload autoplay loop muted></video>
      <canvas id="canvas" width="320" height="240"></canvas>
    </div>
    <canvas id="screenshotCanvas" width="320" height="240"></canvas>
    <div class="switch-button">
      <el-row>
        <el-button type="primary" @click="destroyed">关闭摄像头</el-button>
        <el-button type="primary" @click="init">开始识别</el-button>
      </el-row>
    </div>
  </div>
</template>

<script>
  import tracking from '@/assets/tracking/build/tracking-min.js';
  import '@/assets/tracking/build/data/face-min.js';

  export default {
    data() {
      return {
        trackerTask: null,
        mediaStreamTrack: null,
        video: null,
        screenshotCanvas: null,
        uploadLock: true // 上传锁
      }
    },
    mounted() {
      this.init();
    },
    methods: {
      // 初始化设置
      init() {
        this.video = this.mediaStreamTrack = document.getElementById('video');
        this.screenshotCanvas = document.getElementById('screenshotCanvas');

        let canvas = document.getElementById('canvas');
        let context = canvas.getContext('2d');

        // 固定写法
        let tracker = new window.tracking.ObjectTracker('face');
        tracker.setInitialScale(4);
        tracker.setStepSize(2);
        tracker.setEdgesDensity(0.1);
        //摄像头初始化
        this.trackerTask = window.tracking.track('#video', tracker, {
          camera: true
        });

        let _this = this;
        tracker.on('track', function(event) {

          // 检测出人脸 绘画人脸位置
          context.clearRect(0, 0, canvas.width, canvas.height);
          event.data.forEach(function(rect) {
            context.strokeStyle = '#0764B7';
            context.strokeRect(rect.x, rect.y, rect.width, rect.height);
          });
          // event.data.length长度为多少代表检测几张人脸
          if(_this.uploadLock && event.data.length){
          //上传图片
              _this.screenshotAndUpload();
          }
        });
      },
      // 上传图片
      screenshotAndUpload() {
        // 上锁避免重复发送请求
        this.uploadLock = false;

        // 绘制当前帧图片转换为base64格式
        let canvas = this.screenshotCanvas;
        let video = this.video;
        let ctx = canvas.getContext('2d');
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        let base64Img = canvas.toDataURL('image/jpeg');

        // 打印出 base64Img
        console.log('base64Img:',base64Img)

        // 请求接口成功以后打开锁
        // this.uploadLock = true;
      },
      //关闭摄像头
      destroyed(){
        if(!this.mediaStreamTrack){
          return
        }
        this.mediaStreamTrack.srcObject.getTracks()[0].stop();
        this.trackerTask.stop()
      }
    }
  }
</script>

<style scoped>
  /* 绘图canvas 不需显示隐藏即可 */
  #screenshotCanvas{
    display: none;
  }

  .video-box{
    position: relative;
    margin-left: 30px;
    width: 320px;
    height: 240px;
  }

  .switch-button{
    margin-top: 30px;
    margin-left: 30px;
  }
  video,canvas{
    position: absolute;
    top: 0;
    left: 0;
	border: #000000 5px solid;
  }
</style>

五、效果图

vue项目中使用trackingjs人脸识别


总结

新需求要做一个前端人脸登录,最终选用了trackingjs库实现识别的前端部分,在前端进行识数据采集,并把信息保存后发送给后端进行处理。

到了这里,关于vue项目中使用trackingjs人脸识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • (项目笔记)opencv人脸识别

    Haar级联: Haar特征:边缘特征,线性特征,中心环绕特征,对角线特征 这些特征组合为特征模板,特征模板里有白色和黑色矩形,模板特征即为白色矩形像素和减去黑色矩形像素和。 Haar 特征的提取简单说就是通过不断改变模版的大小、位置和类型,白色矩形区域像素和‘减

    2024年02月05日
    浏览(42)
  • OpenCV人脸识别项目(训练+测试)

    图片来自网上,如果侵权,告知则删除 批量修改文件名(常见文件操作,可以学习一下) 进入正题  (一)读取图片 (二)灰度转换 (三)修改尺寸 (四)绘制矩形 (五)人脸检测 (六)检测多个人脸 (七)视频检测  (八)拍照保存 准备数据集 训练集train  注意:第

    2024年02月04日
    浏览(44)
  • SpringBoot+Vue 实现网页版人脸登录、人脸识别!【全部开源】

    FACE-UI 基于前后端分离Web端项目,主要实现了网页版的人脸登录,通过调取前端摄像头拍照,传入后台进行跟数据库人脸库的相似度比对。 技术点:Springboot,Mysql,JWT,VUE 2.X 等等技术实现,主要功能点:人脸列表CRUD,日志列表CRUD,基于自建人脸库通过base64编码方式存储人脸

    2024年02月06日
    浏览(52)
  • 毕设项目-人脸识别考勤签到系统

    人脸识别小程序、签到小程序,借助百度AI智能识别功能实现。 学生信息管理,考勤管理,人脸识别处理大概这三个模块。 功能模块: 登录与注册(两种身份 老师或学生) 课程发布(老师可以发布课程信息 名称 地点 选课人数) 课程查看(学生查看课程信息) 人脸录入(

    2023年04月08日
    浏览(82)
  • Python基于深度学习的人脸识别项目源码+演示视频,利用OpenCV进行人脸检测与识别 preview

    ​ 该人脸识别实例是一个基于深度学习和计算机视觉技术的应用,主要利用OpenCV和Python作为开发工具。系统采用了一系列算法和技术,其中包括以下几个关键步骤: 图像预处理 :首先,对输入图像进行预处理,包括读取图片、将图片灰度转换、修改图片的尺寸、绘制矩形

    2024年04月13日
    浏览(70)
  • 个人学习日志——树莓派实时人脸识别项目

    这是我运行的第一个项目,源代码来自于GitHub。第一次接触树莓派,python编程 学习目标: 1、了解树莓派的python基础知识    2、了解程序如何运行 3、了解程序的框架  4、如何调用接口 硬件:树莓派4B csi500W摄像头  环境:树莓派官方系统 python3 opencv 参考链接: 1、【创客实

    2024年02月04日
    浏览(30)
  • Vue中如何进行图像识别与人脸对比

    随着人工智能的发展,图像识别和人脸识别技术已经被广泛应用于各种应用程序中。Vue作为一种流行的前端框架,提供了许多实用工具和库,可以帮助我们在应用程序中进行图像识别和人脸识别。在本文中,我们将介绍如何使用Vue进行图像识别和人脸对比。 图像识别是一种计

    2024年02月09日
    浏览(40)
  • 做一个人脸识别考勤机项目(利用OpenCV)

    重要说明 :此项目直接跟进操作的话只能在Ubuntu16.04上面编译成功!目前已经补上18.04上的编译操作。         本文主要跟随B站Up主【物联网小学妹】上传的【从0到1做一个物联网人脸识别考勤机项目!】视频教程做一个简要笔记 视频地址:【大厂敲门砖】从0到1做一个物

    2024年04月22日
    浏览(51)
  • VUE+faceApi.js实现摄像头拍摄人脸识别

    需求:前端获取到摄像头信息,通过模型来进行判断人像是否在镜头中,镜头是否有被遮挡。 实现步骤: 1、通过video标签来展示摄像头中的内容 2、通过canvas来绘制视频中信息进行展示 3、在拍照时候将canvas的当前帧转成图片 下载依赖 face-api.js是核心依赖必须要下 element-ui为

    2024年02月01日
    浏览(39)
  • 基于python-opencv,svm的开源人脸识别项目

      前言       本项目是我自己在学校里完成的一个小项目,本项目为基于python-opencv,svm的人脸识别开源项目,不同于其他的直接从kaggle等获取划分好的数据集,本项目致力于从无到有的完成机器学习的所有步骤,即: 目录 项目展示: 一、数据采集 1.创建爬虫项目 2.修改set

    2024年02月08日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包