在 Snap! 中使用 mediapipe 库

在 Snap! 中使用 mediapipe 库

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

MediaPipe是一个提供人工智能和机器学习技术的库和工具,可以用于姿态检测、手部追踪、人脸检测和手势识别等。它提供了JavaScript API,可以通过JavaScript函数将其引入到Snap!中。可以使用import()动态引入模块,并使用模块中的函数。可以使用gestureRecognizer识别图片,并使用Snap!的画笔功能绘制手部关键点。

🔎

延伸解读

动态导入:在Snap!中集成MediaPipe的关键

文章使用JavaScript的import()函数异步加载MediaPipe模块,并将其函数挂载到全局变量,从而在Snap!的非模块环境中使用。这种方法避免了重复导入,并允许动态加载外部库。对于希望在Snap!中集成其他JavaScript库的开发者,这是一个可借鉴的模式。

坐标系转换:从MediaPipe到Snap!

MediaPipe返回的手部关键点坐标以左上角为原点,y轴向下;而Snap!的坐标系原点在舞台中心,y轴向上。因此,在绘制前必须进行坐标转换。文章提到需要将results.landmarks中的坐标信息转换后使用画笔绘制,这是实现可视化的重要步骤。

利用Snap!画笔实现手部关键点绘制

文章没有直接使用MediaPipe的DrawingUtils,而是基于原始数据在Snap!中绘图,以充分利用Snap!的交互性和画笔功能。通过遍历results.landmarks中的坐标,转换后使用画笔绘制,可以灵活地展示手部关键点。示例中只绘制了一只手,但results.landmarks可能包含两只手的数据。

❓

Q&A

MediaPipe库的主要功能是什么?

MediaPipe库主要用于姿态检测、手部追踪、人脸检测和手势识别等功能。

如何在Snap!中引入MediaPipe库?

可以通过JavaScript的import()函数动态引入MediaPipe库到Snap!中。

MediaPipe是基于什么技术构建的?

MediaPipe是构建在TensorFlow Lite之上的。

如何使用gestureRecognizer识别手势?

可以通过创建gestureRecognizer实例并调用其识别函数来识别手势。

在绘制手部关键点时需要注意什么?

在绘制手部关键点时,需要将MediaPipe的坐标系转换为Snap!的坐标系。

MediaPipe提供了哪些预训练模型?

MediaPipe提供了用于姿态检测、手部追踪、人脸检测和手势识别的预训练模型。

➡️

继续阅读