vue 使用js识别图片是否是完整人脸

因为业务需求需要识别用户上传的图片是否是显示的完整人脸(五官都是在图片上的),但是又不想使用其他平台的一些开放接口的,可以参考使用face.js实现。

第一步下载faceapi.js

npm install face-api.js

第二步下载model文件
model文件需要在github上的faceapi仓库中下载, 找到weights文件夹进行下载
https://github.com/justadudewhohacks/face-api.js/tree/master
在这里插入图片描述
将下载好的model文件可以放置在你项目的目录下,我是放在public文件下
在这里插入图片描述
第三步 在你需要的目录下下导入faceapi.js文件

import * as faceapi from "face-api.js";

然后在页面初始化模型


async init() {
	const modelsPath = "/weights";
    // 加载模型 
    await faceapi.nets.ssdMobilenetv1.loadFromUri(modelsPath);
    await faceapi.nets.faceLandmark68Net.loadFromUri(modelsPath);
    await faceapi.nets.faceRecognitionNet.loadFromUri(modelsPath);
}

最后在你需要进行人脸识别的逻辑处理位置,加上以下代码 (我这里的图片是base64格式, 如果是别的格式的话可以参考 faceapi的接口进行替换)

	  let var = "base64格式";
	  const byteCharacters = atob(val.replace(/^data:image\/\w+;base64,/, ""));
      const byteNumbers = new Array(byteCharacters.length);
      for (let i = 0; i < byteCharacters.length; i++) {
        byteNumbers[i] = byteCharacters.charCodeAt(i);
      }
      const byteArray = new Uint8Array(byteNumbers);
      const blob = new Blob([byteArray], { type: "image/jpeg" });

      const img = await faceapi.bufferToImage(blob);

      // 进行人脸检测
      const detection = await faceapi.detectSingleFace(img).withFaceLandmarks();

      if (detection) {
        // 存在检测到的人脸
        const detections = await faceapi.detectAllFaces(img).withFaceLandmarks();

        detections.forEach((element) => {
          const { landmarks } = element;
          const leftEye = landmarks.getLeftEye()[0];
          const rightEye = landmarks.getRightEye()[3];
          const mouth = landmarks.getMouth();

          const imageWidth = img.width;
          const imageHeight = img.height;
          if (
            (leftEye.x < imageWidth / 3 && rightEye.x < imageWidth / 3) || // 左右眼位于图像左侧
            (leftEye.x > (2 * imageWidth) / 3 && rightEye.x > (2 * imageWidth) / 3) || // 左右眼位于图像右侧
            (mouth[0].y < imageHeight / 3 && mouth[6].y < imageHeight / 3) || // 嘴巴位于图像上方
            (mouth[0].y > (2 * imageHeight) / 3 && mouth[6].y > (2 * imageHeight) / 3) // 嘴巴位于图像下方
          ) {
            console.log("半张人脸");
            return;
          } else {
            console.log("完整人脸");
          }
        });
      } else {
        // 未检测到人脸
        console.log("图片不包含人脸");
        return;
      }
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 是一个用于构建用户界面的 JavaScript 框架,而人脸识别通常需要结合其他技术来实现。在 Vue实现人脸识别可以通过以下步骤: 1. 引入人脸识别相关的库:首先,你需要引入一些用于人脸识别JavaScript 库,比如 OpenCV 或者 face-api.js。你可以使用 npm 或 yarn 来安装这些库,并在 Vue 项目中引入它们。 2. 创建人脸识别组件:在 Vue 中,你可以创建一个名为 FaceRecognition 的组件来处理人脸识别的逻辑。在该组件中,你可以定义一个 canvas 元素用于绘制人脸识别的结果。 3. 获取视频流:为了实现实时人脸识别,你需要通过 getUserMedia API 获取视频流。你可以在组件的 mounted 钩子函数中调用 getUserMedia,将视频流展示在页面上。 4. 进行人脸检测:使用你选择的人脸识别库,例如 face-api.js,对视频流中的人脸进行检测。你可以编写相应的代码来捕获视频帧并进行人脸检测。检测到人脸后,可以将其绘制在 canvas 上。 5. 进行人脸识别:一旦检测到人脸,你可以使用人脸识别库提供的方法来进行人脸识别。这可能涉及到训练模型、比对人脸特征等步骤。根据你选择的库,具体的实现方式可能会有所不同。 6. 显示结果:将人脸识别的结果展示在页面上。你可以在 canvas 上绘制标记来指示识别到的人脸或者显示识别结果的信息。 需要注意的是,人脸识别属于比较复杂的任务,涉及到图像处理和机器学习等领域。在实现人脸识别时,你可能需要深入学习相关的知识,并选择适合你项目需求的库和算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值