vue+springboot 实现人脸识别方向

vue+springboot 实现人脸识别方向

前端人脸识别方向

思路:打开摄像头获取视频流数据 + 通过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
    }
}
系统功能1、管理员管理:根据不同角色设置不同的管理权限;2、小区管理,管理多个小区资料,新增、修改、删除、摄像头管理等功能;3、小区摄像头管理:摄像头的新增、修改及删除功能;4、居民管理:居民资料新增,修改,删除,Excel批量导入,导出,居民人脸采集;5、访客登记:访客的新增,修改,删除,进入登记,离开登记,查询等功能;6、人脸识别:居民出入小区人脸识别功能的实现,使用腾讯AI人脸识别技术实现;7、出入记录:居民出入小区的人脸识别记录查询;8、小区地图:所有小区在地图的分布情况,使用百度地图实现;9、使用Echarts技术实现小区人员分类统计(柱状)图表;10、菜单管理:新增、修改、删除菜单功能(包括目录,菜单,按钮)11、角色管理:新增、修改、删除角色(系统角色、普通角色)12、系统日志:记录了系统中所有操作的日志,方便发现问题,查找原因;运行环境:  1、JDK1.8及以上版本  2、Tomcat 8.5及以上版本  3、MySql 5.7及以上版本  4、Redis开发工具:  1、前端开发工具:Visual Studio Code  2、后端开发工具:Intellij IDEA使用技术:  1、Vue2.x+ElementUI(前端)  2、Springboot+MyBatisPlus+Redis+Shiro+Swagger(后端)  3、人脸识别技术(腾讯AI)  4、MySql数据库技术  5、Redis缓存技术  6、百度地图  7、Echarts图表技术  8、POI Excel导入导出技术  9、Shiro权限控制:菜单管理,角色管理,权限管理(按钮及用户级别权限)  10、 Swagger接口配置管理,接口文档管理技术  11、Token单点技术(一个用户不能同时在多个设备登录使用)  12、前后端分离跨域设置等技术
作为一个AI模型,人脸识别涉及到多个技术领域。在此我们以常规的人脸识别为基础,实现一个简单的基于springboot/vue/mybatis的人脸识别系统。 1、人脸检测和人脸识别的技术选择 我们可以使用开放的Python的人脸识别库(face_recognition),通过Python调用,实现人脸检测和人脸识别。Face_recognition 是使用Dlib进行基于Python的人脸识别的开源项目,仅仅需要几行代码就可以完成一项任务,包括人脸识别,面部比较和面部定位等。 2、技术实现步骤 2.1、环境搭建 开发工具:IntelliJ IDEA 数据库:MySQL 前端技术:Vue.js 后端技术:Spring Boot + MyBatis + Face Recognition Library 2.2、集成Face Recognition Library 通过Python安装Face Recognition Library(face_recognition)库,直接使用Python的Pip命令安装 pip install face_recognition 2.3、指定图片目录 在项目中指定图片目录,将其用于人脸检测和识别,默认将图片存储在本项目路径下的img文件夹中。 2.4、前端设计 使用Vue.js实现前端设计,支持以下功能: - 显示识别结果和置信度 - 支持上传图片,实现人脸识别 - 支持查询人脸信息 2.5、后端设计 使用Spring Boot和MyBatis实现后端功能,包括人脸检测和识别,以及查询人脸信息。 使用Spring Boot实现RESTful API,以处理前端请求和响应。 在MyBatis Mapper文件中定义SQL语句,用于从数据库中检索人脸信息。 2.6、上传图片实现人脸识别 实现上传图片实现人脸识别功能,主要包括以下步骤: - 通过上传功能获取上传图片,并且存储到指定目录下 - 对于新上传的照片进行人脸检测和识别 - 将人脸特征存储到数据库中,用于后续识别和查询 3、总结 我们可以通过Spring BootVue.js对Face Recognition Library(face_recognition)进行集成,实现一个基于人脸识别的系统。同时,我们也应该意识到,在实现基于人脸识别的系统时,我们需要保持对隐私和数据保护的高度警惕性,避免出现不必要的隐私泄露情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值