构建 effet.js 人脸识别交互系统的实战之路

构建 effet.js 人脸识别交互系统的实战之路

文章目录

  • 构建 effet.js 人脸识别交互系统的实战之路
  • 前言
  • 一、什么是effet.js
  • 二、为什么需要使用effet.js
  • 四、effet.js能做什么
  • 五、使用步骤
    • 1.引入库
    • 2.main.js中注册全局
    • 2.使用
    • 3.效果图
  • 六、其他模式讲解
    • 人脸打卡
    • 人脸添加
    • 睡眠检测
  • 在h5中的使用
  • 总结


前言

在当今数字化的时代,用户体验变得尤为重要,尤其是在身份验证、互动和安全性方面。传统的登录方式,如密码和短信验证码,逐渐显得繁琐而低效。人脸识别技术因其便捷性和安全性,正越来越多地被应用到各类应用场景中。

在这样的背景下,我开发了 effet.js —— 一个基于 facemesh.js 的人脸样式框架,旨在为 Web 应用提供丰富而智能的人脸交互功能。effet.js 实现了从人脸登录到睡眠检测的多样化功能,并力求在开发的灵活性与用户体验之间找到平衡。

在这篇博客中,我将带你了解 effet.js 的开发历程,包括它的功能实现、技术挑战和我为推广它所做的努力。如果你对如何利用 JavaScript 和前沿技术提升用户体验感兴趣,相信这篇文章会为你提供一些有趣的思路。


一、什么是effet.js

face-effet 简称effet.js 是一款人脸样式框架

effet.js 是一个轻量级的人脸样式框架,专注于为网页带来生动的面部动画效果。通过简单的API,开发者可以轻松实现眨眼、张嘴、摇头等动态表情,使用户界面更加互动和生动。effet.js 适用于需要增强用户体验的各种应用场景,特别是在前端项目中集成复杂的人脸动态效果。

官网地址:https://faceeffet.com/

二、为什么需要使用effet.js

Effet.js是一款轻量级人脸样式框架,可以快速帮我搭建前端识别校验的一个操作,这不是最终的校验, 需要配合后端一起校验,简单操作的api,方便快速帮我们搭建人脸登录,后端我们只需要调用其他厂商的接口
比如:
虹软人脸识别
百度云人脸识别
阿里云人脸识别
腾讯云人脸识别
等等…

四、effet.js能做什么

effet.js目前主要支持核心功能点

标题是否支持速度体验
人脸登录█████████ 90%
人脸打卡█████████ 90%
睡眠检测█████████ 90%
人脸添加█████████ 90%

人脸登录:动作检测,眨眨眼,张张嘴,左右摇头检测
人脸打卡:判断摄像头距离头部远近位置来计算当前人脸是否可以打卡
睡眠检测:计算眼睛闭合度来呈现当前人脸是否在睡觉
人脸添加:计算人脸上下左右摇头的动画效果,完成人脸数据的返回

五、使用步骤

1.引入库

代码如下(我们已vue的人脸登录为示例,一个简单的人脸登录):

通过npm命令安装,网络不好的同学们,可以尝试切换淘宝镜像

npm config set registry https://registry.npmmirror.com

安装插件

npm i face-effet -S

2.main.js中注册全局

代码如下(示例):

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
// 引入核心样式
import 'face-effet/effet/effet.css'
// 引入核心主文件
import faceEffet from 'face-effet/effet/effet.js'
// 注册为全局对象
Vue.prototype.$faceEffet = faceEffet


Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

2.使用

 <template>
  <div>
    <div ref="faceVueTest" id="faceId" ></div>
    <el-button @click="startFace">开启人脸</el-button>
    <el-button @click="restartFace">重启人脸</el-button>
    <el-button @click="closeFace">关闭人脸</el-button>
  </div>
  </template>
   
  <script>
  // $faceEffet 对象是在main.js 注册好的全局对象
  export default {
    name: "index",
    data(){
      return {
      }
    },
    beforeDestroy(){
      if (this.$faceEffet){
        this.$faceEffet.close();
      }
    },
    methods:{
      startFace(){
          // 人脸容器的初始化
        this.$faceEffet.init({
          el:this.$refs.faceVueTest, // 直接传入html元素 也可以直接传入字符 'faceId'
          type:'checkLogin', // 人脸登录模式
          callBack:this.callBack // 阶段回调函数,会打印每个执行步骤,一般是在这个方法调用后端接口
        })
      },
      callBack(data){
          // 验证过程的回调打印
        console.log(data)
      },
      restartFace(){
          // 重启人脸容器
        this.$faceEffet.restart()
      },
      closeFace(){
          // 关闭人脸容器
        this.$faceEffet.close();
      }
    }
  }
  </script> 

3.效果图

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

上面案例主要介绍了,只需简单的代码就可以完成,眨眨眼,张张嘴,左右摇头的效果

六、其他模式讲解

人脸打卡

this.$faceEffet.init({
   el:this.$refs.faceVueTest, // 直接传入html元素 也可以直接传入字符 'faceId'
   type:'clockIn', // 人脸打卡
   callBack:this.callBack // 阶段回调函数,会打印每个执行步骤,一般是在这个方法调用后端接口
 })

人脸添加

this.$faceEffet.init({
  el:this.$refs.faceVueTest, // 直接传入html元素 也可以直接传入字符 'faceId'
   type:'addFace', // 人脸打卡
   callBack:this.callBack // 阶段回调函数,会打印每个执行步骤,一般是在这个方法调用后端接口
 })

睡眠检测

this.$faceEffet.init({
   el:this.$refs.faceVueTest, // 直接传入html元素 也可以直接传入字符 'faceId'
   type:'checkSleep', // 人脸打卡
   callBack:this.callBack // 阶段回调函数,会打印每个执行步骤,一般是在这个方法调用后端接口
 })

其实差异不大,唯一变化的是type的参数值

具体使用可以查看官方文档:https://faceeffet.com/

在官方文档中讲解了入参的具体对象

在h5中的使用

详细代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Face-effet.js 人脸登录示例</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://unpkg.com/face-effet/effet/effet.css">
    <script src="https://unpkg.com/face-effet/effet/effet.js"></script>
    <style>
        #myface{
            margin-top: 350px;
        }
    </style>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            effet.init({
                el: 'myface',
                callBack: (data) => {
                    console.log(data);
                }
            });
        });
    </script>
</head>
<body>
<!-- 用于渲染人脸识别的容器 -->
<div id="myface"></div>
<button onclick="effet.restart()">重新检测</button>
</body>
</html>


总结

effet.js 是一个基于 facemesh.js 的人脸交互框架,旨在为 Web 应用提供便捷而智能的人脸识别功能,包括登录、打卡和睡眠检测等。通过这篇博客,我将分享 effet.js 的开发历程、功能实现、以及面临的技术挑战,希望能为有兴趣提升用户体验的开发者提供一些启发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[产品管理-46]:产品组合管理中的项目平衡与管道平衡的区别

目录 一、项目平衡 1.1 概述 1.2 项目的类型 1、根据创新程度和开发方式分类 2、根据产品开发和市场周期分类 3、根据风险程度分类 4、根据市场特征分类 5、根据产品生命周期分类 1.3 产品类型的其他分类 1、按物理形态分类 2、按功能或用途分类 3、按技术或创新程…

OpenCV高级图形用户界面(12)用于更改指定窗口的大小函数resizeWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::resizeWindow() 函数用于更改指定窗口的大小。这使得你可以根据需要调整窗口的宽度和高度。 注释 指定的窗口大小是指图像区域的大小。工具栏…

必学的20个Excel表格操作python脚本!

示例数据 (bank_data.xlsx) 首先&#xff0c;我们创建一个示例的Excel文件bank_data.xlsx&#xff0c;并填充一些示例数据。 import pandas as pd # 创建示例数据 data { 客户ID: [1, 2, 3, 4, 5], 姓名: [张三, 李四, 王五, 赵六, 孙七], 联系方式: [13800000000, 13900000…

get请求(豆瓣电影第一页爬取)

目录 &#xff08;一&#xff09;需要的python库 import urllib.request import urllib.parse &#xff08;二&#xff09;找到url和headers url headers &#xff08;三&#xff09;创建一个请求对象和返回一个响应对象 创建一个请求对象 返回一个响应对象 &#xff08…

【网络篇】计算机网络——网络层详述(笔记)

目录 一、网络层 1. 网络传输流程简述 2. 转发和路由选择 3. 控制平面&#xff1a;SDN 方法 二、路由器工作原理 1. 概述 &#xff08;1&#xff09;输入端口 &#xff08;2&#xff09;交换结构 &#xff08;3&#xff09;输出端口 &#xff08;4&#xff09;路由选…

特步引入IPD管理,钉钉项目 Teambition 助力高效产品研发管理

中国是全球第二大消费市场&#xff0c;运动鞋服行业拥有着巨大的发展潜力。在过去五年时间里&#xff0c;随着中国产品品牌和质量的提升&#xff0c;体育市场的占有率格局发生了显著变化&#xff0c;不同于部分国际品牌巨头营收持续减弱&#xff0c;国产领军体育运动品牌「特步…

(C/C++)文件

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 fputc fgetc fputs fgets fprintf fscanf fwrite fread sprintf和sscanf snprintf ​编辑 4对比一组函数(prin…

Linux驱动编程 - RTC子系统

目录 简介&#xff1a; 一、代码分析 1、RTC子系统初始化 2、注册RTC设备驱动 2.1 rtc_dev_prepare(rtc) 3、总结 二、ds1302 驱动分析 三、rtc设置和测试工具 1、date读/写系统时间 2、hwclock读/写RTC 简介&#xff1a; Linux中RTC设备驱动是一个标准的字符设备驱动&…

ZBrush和3D-Coat各自的优缺点是什么?

zbrush支持的模型面数高英文界面&#xff0c;3d coat支持的模型面数比zbrsh低有中文界 ZBrush优缺点 1、ZBrush优点&#xff1a; zbrush是高精度建模poser制作的首选。可搭配雕刻版使用&#xff0c;主要为烘焙高细节的铁图建模。因为是高精度模型&#xff0c;不适用于动画和游…

《Spring Cloud Config与Bus整合实现微服务配置自动刷新》

目录 Config与Bus整合自动刷新步骤1&#xff1a;安装RabbitMQ并启动RabbitMQ的安装 步骤2&#xff1a;创建项目创建Eureka Server创建config-server 步骤3&#xff1a; 添加依赖步骤4&#xff1a;Config Client步骤5&#xff1a;测试运行问题一问题二 总结 Config与Bus整合自动…

python创建树状图

python创建树状图 想法&#xff1a;如何去记住每个页面的元素&#xff0c;如何实现不同页面的导航&#xff0c;如何从主页面遍历每一个页面的每一个元素 1.创建数据结构存储 2.树状图正好是我们想要的结构体 class TreeNode:def __init__(self, data):self.data dataself.ch…

电感电容谐振原理及Matlab仿真

一、电感电容谐振原理概述 电感电容谐振&#xff08;LC谐振&#xff09;是一种电路现象&#xff0c;它发生在电感器&#xff08;L&#xff09;和电容器&#xff08;C&#xff09;通过适当的方式连接时&#xff0c;电路中电流和电压之间形成共振。在这种共振状态下&#xff0c;…

2025选题推荐|基于SpringBoot的幼儿园智能管理与监控系统的设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

测试代理IP速度的方法有哪些?

了解代理的连接速度是否快速是确保网络使用效率和体验的关键因素之一。本文来为大家如何有效地评估和测试代理IP的连接速度&#xff0c;以及一些实用的方法和工具&#xff0c;帮助用户做出明智的选择和决策。 一、如何评估代理IP的连接速度 1. 使用在线速度测试工具 为了快速…

MySQL从入门到跑路

SQL语言 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于管理和操作关系数据库的一种标准编程语言。 SQL分类&#xff1a; DDL(Data Definition Language)&#xff1a;数据定义语言&#xff0c;用于操作数据库、表、字段&#xff0c…

外包干了3周,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;大专生&#xff0c;21年通过校招进入武汉某软件公司&#xff0c;干了差不多3个星期的功能测试&#xff0c;那年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我才在一个外包企业干了3周的功…

XCTF通关记录

XCTF通关记录 地址1、Banmabanma2、适合作为桌面一、变暗反转过后&#xff0c;仔细看是有个二维码的、调节然后调节亮度与对比度、得到它二、二维码解码出来之后1 、首先想到的是ASCII码&#xff0c;但是结果好像不对2、然后去搜索这是个啥 3、心仪的公司 地址 xtcf&#xff1…

uniapp,获取头部高度

头部自定义时候&#xff0c;设置获取安全区域&#xff0c;可以用 uni.getSystemInfoSync();接口。 <view class"statusBar" :style"{height:statusBarHeightpx}"> let SYSuni.getSystemInfoSync(); let statusBarHeightref(SYS.statusBarHeight) …

Java基于SSM微信小程序物流仓库管理系统设计与实现(lw+数据库+讲解等)

选题背景 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

webm格式怎么转换成mp4?几个操作简单的视频格式转换方法

webm格式怎么转换成mp4&#xff1f;webm&#xff0c;一种由Google推出的开源视频格式&#xff0c;以其高效的压缩率和流媒体传输能力而备受青睐。它特别适用于网络视频播放&#xff0c;能够在保证视频质量的同时&#xff0c;大大节省带宽和存储空间。然而&#xff0c;尽管webm格…