这个项目能做什么
## MediaPipe Unity 插件
这是一个用于MediaPipe(0.10.22)的Unity(>= 2022.3)原生插件。目标是将MediaPipe C++ API逐一移植到C#,以便从Unity调用。这种方法在循环中调用多个API时可能会牺牲性能,但提供了灵活性。
### 功能
- 使用C#编写MediaPipe代码。
- 在Unity上运行MediaPipe官方解决方案。
- 在Unity上运行自定义`Calculator`和`CalculatorGraph`(某些输入/输出类型可能需要C++)。
### Hello World 示例
```cs
using Mediapipe;
using UnityEngine;
public sealed class HelloWorld : MonoBehaviour
{
private const string _ConfigText = @"
input_stream: ""in""
output_stream: ""out""
node {
calculator: ""PassThroughCalculator""
input_stream: ""in""
output_stream: ""out1""
}
node {
calculator: ""PassThroughCalculator""
input_stream: ""out1""
output_stream: ""out""
}
";
private void Start()
{
using var graph = new CalculatorGraph(_ConfigText);
using var poller = graph.AddOutputStreamPoller<string>("out");
graph.StartRun();
for (var i = 0; i < 10; i++)
{
graph.AddPacketToInputStream("in", Packet.CreateStringAt("Hello World!", i));
}
graph.CloseInputStream("in");
var packet = new Packet<string>();
while (poller.Next(packet))
{
Debug.Log(packet.Get());
}
graph.WaitUntilDone();
}
}
```
更多详细用法,请参阅API概述或教程。
### 安装
从发布页面下载预构建包:
| 文件 | 内容 |
| --- | --- |
| MediaPipeUnityPlugin-all.zip | 包含所需库的所有源代码。 |
| MediaPipeUnityPlugin-all-stripped.zip | 与上述相同,但已剥离符号。 |
| com.github.homuler.mediapipe-*.tgz | 用于Unity包管理器的压缩包。 |
| MediaPipeUnityPlugin.*.unitypackage | Unity包文件。 |
对于移动示例场景,优先使用`MediaPipeUnityPlugin-all.zip`或`-stripped.zip`,因为它们包含所需的模型和设置。
### 自行构建插件
大多数情况下,您不需要自行构建插件。仅当预构建包无法工作时,请遵循构建指南。仓库不包含所需的库或模型,因此克隆后需要构建。
### 构建包
- **Unity包**:打开项目,点击`Tools > Export Unitypackage`。
- **压缩包**:安装`npm`,然后在`Packages/com.github.homuler.mediapipe`中运行`npm pack`。
### 支持平台
macOS和Windows不支持GPU模式。支持平台包括Linux(x86_64)、macOS(x86_64/ARM64)、Windows(x86_64)、Android、iOS和WebGL(有限制)。
### 支持的解决方案
该插件为多个MediaPipe任务实现了C# API,包括:
- 目标检测
- 图像分割
- 手部关键点检测
- 手势识别
- 人脸检测
- 人脸关键点检测
- 姿态关键点检测
- 音频分类
通过MediaPipe框架的旧版解决方案也可用,但支持已结束。
### 使用
使用`.unitypackage`或`.tar.gz`将插件导入您的项目。
#### Android 注意事项
对于Android构建,请确保APK中包含`libstdc++_shared.so`,否则将抛出`DllNotFoundException`。将其放在`Assets/Plugins/Android`中,或添加Gradle代码以在构建时包含它。
#### 示例应用
查看`Assets/MediaPipeUnity/Samples/Scenes`下的示例场景。在Inspector中,选择适当的推理模式(CPU或GPU)和资源加载器类型(编辑器用Local,设备用StreamingAssets)。
### 技术限制
- 插件使用原生库;错误可能导致UnityEditor或应用崩溃。在Linux/macOS上,`SIGABRT`被处理以避免崩溃,但在Windows上无法实现。
- 对于GPU推理,不支持OpenGL Core API;在PC独立构建中使用Vulkan。
### 许可证
MIT,部分文件使用其他许可证(MediaPipe Apache 2.0、emscripten MIT、FontAwesome)。详情请参阅第三方声明。
评论
0 评分人数达到10人后显示
登录后参与讨论。