* Begin refactor Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Begin IntPtr sweeping changes Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Implement StringPacket Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Implement StringPacket Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Remove factory class to prepare for strongly typed packets Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Finish FloatVectorPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish Anchor3DVectorPacket and BoolPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Make SerializedProto actually IDisposable Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish ClassificationListPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish ClassificationListVectorPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish DetectionPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish DetectionVectorPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish FaceGeometryPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish FaceGeometryVectorPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish FloatArrayPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Fix mismatched extern call for FloatVector This is potentially lethal and can cause a really bad bug on use Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish FloatPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish FrameAnnotationPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish GpuBufferPacket Converting the entirety of the GPU PInvoke code was also performed, it was unavoidable Signed-off-by: Ayane <ayane@vignetteapp.org> * Update imageFrame This is kind of butchered but we will have a span-based overload again when I feel like it Signed-off-by: Ayane <ayane@vignetteapp.org> * Reintroduce the memory safe iamge handling again Signed-off-by: Ayane <ayane@vignetteapp.org> * Porting ImageFrame is an act of god ong Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish ImageFramePacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish IntPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Fix pointer ambiguity in MpResourceHandle Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Let MpResourceHandle use its private property handle Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Finish LandmarkListPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish LandmarkListVectorPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish NoramlizedLandmarkListPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish MatrixPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish NormalizedRectPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish normalizedVectorRect Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish RectPacket Signed-off-by: Ayane <ayane@vignetteapp.org> * Finsih RectVector Signed-off-by: Ayane <ayane@vignetteapp.org> * Finish all Packets Signed-off-by: Ayane <ayane@vignetteapp.org> * Fixup CalculatorGraph for generic Packet types Signed-off-by: Ayane <ayane@vignetteapp.org> * a Signed-off-by: Ayane <ayane@vignetteapp.org> * Deprecate Solutions class As there is no maintainers for it, it doesn't seem worth keeping it for now. We will put it on it's own package instead Signed-off-by: Ayane <ayane@vignetteapp.org> * Forgot to commit this 💀 Signed-off-by: Ayane <ayane@vignetteapp.org> * Fix more casting issues Signed-off-by: Ayane <ayane@vignetteapp.org> * Make sure native methods are marshaled properly Signed-off-by: Ayane <ayane@vignetteapp.org> * Update some tests Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Add an even more memory safe ctor for ImageFrame Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Fix tests lmao Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Fix StringPacket not pointing to a ptr Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> * Fix incorrect test facts provided on cases Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> --------- Signed-off-by: Ayane Satomi <ayane@vignetteapp.org> Signed-off-by: Ayane <ayane@vignetteapp.org>
MediaPipe.NET
Bringing the best of MediaPipe to the .NET ecosystem! Based on MediaPipeUnity, MediaPipe.NET brings Google's MediaPipe into the .NET ecosystem in its fullest.
Installation
You may install via NuGet:
dotnet add --project <Project> Mediapipe.Net
Since this library is mapping off native methods from MediaPipe to the CLR realm, the runtime is not explicitly included in the NuGet package or in this repository. Interested parties who may want to head to the MediaPipe.NET.Runtime repository, where the native code resides.
However, if you just want things to work, You will want to use MediaPipe.Net.Runtime, you have the option of using CPU or GPU:
$ dotnet add --project <Project> Mediapipe.Net.Runtime.Gpu # if you want to use GPU
$ dotnet add --project <Project> Mediapipe.Net.Runtime.Cpu # if you want to use CPU
⚠️ NOTE ⚠️ : Certain features may not work at the moment in GPU, please consult the compatibility matrix.
Compatibility Matrix
We share the same compatibility matrix with MediaPipeUnityPlugin, so this will change depending on whichever party implements what's missing.
| Linux (x86_64) | macOS (x86_64) | macOS (ARM64) | Windows (x86_64) | Android | iOS | |
|---|---|---|---|---|---|---|
| Linux (AMD64) 1 | ✔️ | ❓ | ||||
| Intel Mac | ✔️ | ❓ | ❓ | |||
| M1 Mac 2 | ✔️ | ❓ | ❓ | |||
| Windows 10 (AMD64) 3 4 | ✔️ | ✔️ | ❓ |
Examples
Coming soon!
Copyright
MediaPipe.NET is Copyright © The Vignette Authors, Licensed under MIT. Parts of this code is based on MediaPipeUnity, Copyright © homuler, Licensed under MIT.
-
Tested on Arch Linux. ↩︎
-
Experimental, because MediaPipe does not support M1 Mac. ↩︎
-
Windows 11 will be also OK. ↩︎
-
Running MediaPipe on Windows is experimental. ↩︎