网站首页 > 知识剖析 正文
大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
今天遇到一个非常有意思的库,即 Handsfree.js,特意分享给大家,看看是否可以结合自己的日常研发、业务支持等做一点小小的创新。话不多说,直接开始。
1.什么是 Handsfree
Build handsfree User Experiences and add face, hand, and pose tracking to your projects in a snap ?
Handsfree 是一个通过计算机视觉集成手势,面部表情和各种姿势识别的前端库。其核心 AI 技术用到了 tensorflow,可在浏览器上触发交互事件,比如:滚动网页,检测人脸并展示相关表情,控制桌面游戏等等,开发者还可以通过 Handsfree 与 websocket 的结合控制任意与电脑连接的设备。
官方提供的以下模型可以实时组合和重新配置:
- MediaPipe Hands (2D):每只手 21 个 2D 手部标志;同时追踪最多 4 只手;支持捏合状态、手指指针和手势
- TensorFlow Handpose:支持 21 个 3D 手部标记;一次只能追踪 1 只手;支持额外的助手和插件
- MediaPipe FaceMesh:支持 468 个 2D 人脸特征点;一次最多追踪 4 张面孔; 支持更多助手和插件
- MediaPipe Pose:支持具有 33 个 2D 姿势地标的全身模式;具有 25 个 2D 上身姿势标志的上半身模式
- TensorFlow Handpose:支持 6DOF 头部姿势;11 种面部变形和 16 种辅助状态;附带基于 “Face Pointer” 的插件
2.如何使用 Handsfree
开发者可以选择从 CDN 加载资源然后使用,比如下面的例子:
<head>
<!-- 加载 Handsfree.js 的官方包,包含 css 和 js -->
<link rel="stylesheet" href="https://unpkg.com/handsfree@8.5.1/build/lib/assets/handsfree.css" />
<script src="https://unpkg.com/handsfree@8.5.1/build/lib/handsfree.js"></script>
</head>
<body>
<!-- 实例化Handsfree同时启用 -->
<script>
const handsfree = new Handsfree({hands: true})
handsfree.enablePlugins('browser')
handsfree.start()
</script>
</body>
当然,也可以选择从 NPM 下载然后使用:
// 启用 Mediapipe 的 “手” 模型
const handsfree = new Handsfree({hands: true})
// 启动标签为 "browser" 的插件
handsfree.enablePlugins('browser')
// 开始追踪
handsfree.start()
但是,值得一提的是某些模型体积可能超过 10Mb+,加载可能需要先对较长的时间。因此,如果要自行托管模型并离线使用,可以将模型从 npm 包下载到项目的公共文件夹中,比如 PUBLIC:
// 在 WINDOWS 平台上
xcopy /e node_modules\handsfree\build\lib PUBLIC
// 在其他平台上
cp -r node_modules/handsfree/build/lib/* PUBLIC
然后按照如下方式引用:
import Handsfree from 'handsfree'
const handsfree = new Handsfree({
hands: true,
// Set this to your where you moved the models into
assetsPath: '/PUBLIC/assets',
})
handsfree.enablePlugins('browser')
handsfree.start()
Handsfree.js 还允许开发者通过 handsfree.use(pluginName,callback) 创建各种插件,比如:
// A plugin that console logs your data on every frame
handsfree.use('consoleLogger', (data) => {
console.log(data.weboji.rotation, data.pose.data.faceLandmarks)
})
以上代码将创建一个新插件,然后可以使用 handsfree.plugin.consoleLogger 访问该插件,并将在每一帧上运行。回调存储在 handsfree.plugin.consoleLogger.onFrame 中,可以使用以下命令切换插件可用状态:
handsfree.plugin.consoleLogger.enable()
handsfree.plugin.consoleLogger.disable()
更多关于 Handsfree.js 的用法和原理可以参考文末资料,本文不再过多展开。
参考资料
https://handsfreejs.netlify.app/#models
https://ko-fi.com/handsfreejs
猜你喜欢
- 2024-12-06 为您定制的晚报头像来啦,今天我们都是晚报人!
- 2024-12-06 手内在肌的起止点和功能
- 2024-12-06 《人人译客》如何规划你的移动电商网站(2)
- 2024-12-06 19张色彩卡,手指滑动开启你的“十四五”和2035!
- 2024-12-06 明明是浪漫情侣旅行,谁知男友梦游发疯把她手指头咬掉吞了!
- 2024-12-06 福利丨动动手指赢奖品 理性消费“涨姿势”
- 2024-12-06 设计按钮真的很简单吗?
- 2024-12-06 刷单轻松赚佣金?这样的坑别再跳了
- 2024-12-06 这是勇敢者的游戏!你不来试一下?
- 2024-12-06 大嘴怪手指玩偶折纸图解教程
- 05-05vin码怎么查车型?车辆VIN码的第十位代表什么信息?
- 05-05Java数组数据的操作之检查日期格式是否正确
- 05-05苹果序列号怎么看生产日期和产地?
- 05-05参考文献中的M J N D字母代表什么?
- 05-05闲鱼交易技巧,满满的干货(闲鱼的交易流程怎么样的?我是买家)
- 05-05忘记自已多少岁了?可试试年龄计算器
- 05-05汽车-剖析、解析车架号(VIN)中的第10位-车型年份
- 05-05干货|史上最全波特酒年份指南(波特酒 年份)
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)