Mediapipe的Unity实现

Mediapipe是Google的轻量ML框架,包括了人体姿态识别、手势识别、头发分割等多种功能。Mediapipe支持跨平台,目前提供了Python、Android、IOS、JS等多种解决方案,但暂不支持Unity。
Github有大牛做了Unity的实现,链接
这个项目将MediaPipe API (c++)移植到c#,这样就可以从Unity调用它。当需要在循环中调用多个api时,这种方法可能会牺牲性能,但它提供了使用MediaPipe的可能性。
直接将代码Clone到本地,用Unity(2021.3.3f1)打开会缺失环境,DLL的配置等。
作者也提供了all-in-one的package
其中最新的版本v0.10.1是首次预编译好的包。
在这里插入图片描述
下载第一个,打开后,得到
在这里插入图片描述
使用时,直接用Unity Hub对应的Unity版本打开这个文件夹新建一个文件夹,其中Samples~后面的~要删掉,不然在Unity Editor资源里看不到这个文件夹。
我直接打开是有错的,显示的错误是找不到某个目录下的txt等文件,但实际上这些文件存在的。测试后,运行时,Model Complexity不能选Lite,要选为Full;Running Mode选Sync才是实时的,但是Sync延迟比较明显,换NonBlockingSync(无阻塞同步),延迟会降低,但是会帧一闪一闪的,个人理解是降低了每帧里处理的图像的数量,所以延迟降低,但会闪帧。
在这里插入图片描述延迟情况,用USB3.0而不是2.0,会好一点。
此外,运行时需关闭本机的其他相机应用,比如Windows自带的相机!

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
【资源说明】 基于mediapipeunity实现姿态追踪python源码+使用说明.zip 基于mediapipeunity实现姿态追踪python源码+使用说明.zip基于mediapipeunity实现姿态追踪python源码+使用说明.zip基于mediapipeunity实现姿态追踪python源码+使用说明.zip基于mediapipeunity实现姿态追踪python源码+使用说明.zip基于mediapipeunity实现姿态追踪python源码+使用说明.zip 基于mediapipeunity实现姿态追踪python源码+使用说明.zip # 第三方库要求 mediapipe # 使用方法 ## 1.首先运行udptracker.py 可以根据需要更改ip地址和端口 ## 2.然后使用unity2021.3.13f1c1打开Track副本 点击运行就可以实现追踪 ![image](blob/master/psc.png) # 一些碎碎念 ## 写了一个unity.py可以生成一个视频的追踪点的txt文件,这个文件可以用到unity实现追踪 ## 使用了udp来实现数据的传输,效果还可以 ## 只是在unity实现了点对点的复现,并不可以使用到通用模型上 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
mediapipe是一个开源的跨平台框架,用于构建实时多媒体应用程序。它提供了一系列的机器学习和计算机视觉算法,可以用于各种应用,包括动作捕捉。 在Unity中使用mediapipe进行动作捕捉,可以实现将用户的动作实时应用到虚拟角色上。以下是一个简单的示例代码: ```csharp using Mediapipe.Unity; using UnityEngine; public class MotionCaptureExample : MonoBehaviour { public GameObject character; // 虚拟角色对象 private HandTrackingGraph handTrackingGraph; // 手部跟踪图 private void Start() { handTrackingGraph = gameObject.AddComponent<HandTrackingGraph>(); // 添加手部跟踪图组件 handTrackingGraph.Initialize(); // 初始化手部跟踪图 handTrackingGraph.OnHandsWithoutLandmarksOutput.AddListener(OnHandsWithoutLandmarksOutput); // 监听手部跟踪结果 } private void OnHandsWithoutLandmarksOutput(HandsWithoutLandmarks handsWithoutLandmarks) { if (handsWithoutLandmarks != null && handsWithoutLandmarks.Detections.Count > 0) { // 获取手部跟踪结果 var handDetection = handsWithoutLandmarks.Detections[0]; var handLandmarks = handDetection.HandLandmarks; // 根据手部跟踪结果更新虚拟角色的动作 character.transform.position = handLandmarks[0].ToVector3(); character.transform.rotation = handLandmarks[1].ToQuaternion(); } } private void OnDestroy() { handTrackingGraph.OnHandsWithoutLandmarksOutput.RemoveListener(OnHandsWithoutLandmarksOutput); // 移除监听 handTrackingGraph.Dispose(); // 释放资源 } } ``` 上述代码使用mediapipe的HandTrackingGraph组件进行手部跟踪,并将跟踪结果应用到虚拟角色的位置和旋转上。你可以根据自己的需求修改代码,实现更复杂的动作捕捉效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值