内容提要
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提供了用于姿态检测、手部追踪、人脸检测和手势识别的预训练模型。