这个项目能做什么

## 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)。详情请参阅第三方声明。