%20%F0%9F%92%9E%20&forks=1&issues=1&logo=https%3A%2F%2Fs2.loli.net%2F2023%2F01%2F26%2FylE1K5JPogMqGSW.png&name=1&owner=1&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Light)
OpenVINO C# API
English | 简体中文
Intel Distribution OpenVINO™ tool suite is developed based on oneAPI and can accelerate the development of high-performance computer vision and deep learning applications. It is suitable for various Intel platforms from the edge to the cloud, helping users deploy more accurate real-world results to production systems faster. By simplifying the development workflow, OpenVINO™ empowers developers to deploy high-performance applications and algorithms in the real world.
OpenVINO C# API is a .NET wrapper library for Intel OpenVINO, enabling C# developers to run deep learning model inference with high performance on Windows, Linux, and macOS. Supports mainstream models like YOLO, ResNet, BERT, etc.
The current development version is OpenVINO™ C# API 3.3.0. This release keeps the published API compatible, refreshes OpenVINO 2026.2 C API coverage, adds optional OpenVINO GenAI C API wrappers, and updates runtime packaging, tests, samples, and documentation.
📢 3.3.0 Release Highlights
- Keeps the published core API compatible while refreshing OpenVINO 2026.2 C API coverage and adding C# friendly PascalCase helpers.
- Adds optional
OpenVinoSharp.GenAIwrappers for LLM, Whisper, VLM, and related OpenVINO GenAI C APIs. - Keeps GenAI runtime optional: applications that only use
Core,Model,Tensor,CompiledModel, orInferRequestdo not loadopenvino_genai_c. - Updates runtime NuGet automation for both core OpenVINO runtime and GenAI runtime. GenAI 2026.2 packages cover Windows, Ubuntu, RHEL, and macOS ARM64.
- Strengthens UTF-8 strings, Windows Unicode paths, owned/borrowed native pointer lifetimes, tests, samples, and documentation.
Finally, if you have any questions during use, you can communicate and contact me. We also welcome C# developers to join OpenVINO™ C# API development.
┌─────────────────────────────────────────────────────────────────────────┐
│ One Sentence Summary │
│ ───────────────────────────────────────────────────────────────────── │
│ Run AI model inference in C#, cross-platform, high-performance, │
│ supporting .NET 4.6 to .NET 10.0 │
├─────────────────────────────────────────────────────────────────────────┤
│ Four Core Advantages │
│ ───────────────────────────────────────────────────────────────────── │
│ 🚀 High Performance │ Span<T> zero-copy memory, speed rivals Python/C++│
│ 🖥️ Cross-Platform │ Windows/Linux/macOS, x64/ARM64 full support │
│ 🔄 Async Support │ async/await async inference for high concurrency│
│ 🔌 Multi-Device │ Intel CPU/iGPU/GPU/NPU, AMD CPU (partial) │
├─────────────────────────────────────────────────────────────────────────┤
│ Use Cases │
│ ───────────────────────────────────────────────────────────────────── │
│ Object Detection(YOLO) │ Image Classification │ OCR │ Face Recognition │
│ Speech Synthesis │ NLP │
└─────────────────────────────────────────────────────────────────────────┘
🚀 Get Started in 30 Seconds
1. Install NuGet Packages
dotnet add package JYPPX.OpenVINO.CSharp.API
dotnet add package OpenVINO.runtime.win
(Install different runtime packages for different platforms/devices)
If you need OpenVinoSharp.GenAI, install a matching GenAI runtime package, for example:
dotnet add package JYPPX.OpenVINO.GenAI.runtime.win
2. Write Inference Code
using OpenVinoSharp;
// Load model (supports .xml/.onnx formats)
using var core = new Core();
var model = core.compile_model("yolov8n.xml", "CPU");
// Create inference request and execute
using var request = model.create_infer_request();
request.set_input_tensor(new Tensor(shape, imageData));
request.infer();
// Get detection results
var output = request.get_output_tensor().get_data<float>();
3. Run the Program
dotnet run
📚 View Full YOLO Samples (Includes four versions for .NET 4.6/4.8/Core 3.1/10.0)
📖 Detailed Documentation
| Resource | Link | Description |
|---|---|---|
| API Docs | guojin-yan.github.io/OpenVINO-CSharp-API | Complete class library reference |
| Sample Code | samples/ | YOLO detection samples for 4 framework versions |
| NuGet Package | nuget.org/packages/JYPPX.OpenVINO.CSharp.API | Latest version download |
✨ Complete Feature List
| Feature | Description | Supported Frameworks |
|---|---|---|
| 🚀 Multi-Framework | Supports .NET Framework 4.6-4.8 and .NET 5.0-10.0 | All |
| 🖥️ Cross-Platform | Full support for Windows, Linux, macOS | All |
| ⚡ High Performance | Span<T>/Memory<T> zero-copy memory operations |
.NET Core 2.1+ / .NET 4.7.2+ |
| 🔄 Async Inference | Complete async/await async inference support | .NET Core 3.0+ |
| 💾 Model Caching | Automatic caching of compiled models to avoid recompilation | All |
| 🏊 Object Pool | Inference request object pool to reduce creation/destruction overhead | All |
| 📝 Complete Logging | Configurable multi-level logging system | All |
| 🌍 Bilingual Comments | Complete Chinese and English XML documentation | All |
📦 NuGet Packages
Core Managed Libraries
| Package | Description | Link |
|---|---|---|
| JYPPX.OpenVINO.CSharp.API | OpenVINO C# API core libraries |
Native Runtime Libraries
Integration Library
| Package | Description | Link |
|---|---|---|
| OpenVINO.CSharp.Windows | All-in-one package for Windows |
🚀 More Usage Examples
Initialization and Dynamic Library Loading (Must Read)
using OpenVinoSharp;
// Method 1: Auto-load (Recommended)
// Core will auto-load OpenVINO dynamic libraries, but you need to install runtime packages first:
// NuGet: OpenVINO.runtime.win / OpenVINO.runtime.ubuntu / OpenVINO.runtime.macos etc.
using var core = new Core();
// Method 2: Manually specify dynamic library path (Linux/macOS custom installation)
// If runtime package not installed, or library not in default search path, initialize manually
// Linux example:
Ov.Initialize("/opt/intel/openvino/lib/openvino_c.so");
// Linux environment variable setup (add to ~/.bashrc for permanent effect):
// export LD_LIBRARY_PATH=/opt/intel/openvino/lib:$LD_LIBRARY_PATH
// Windows example:
Ov.Initialize(".\dll\win-x64/openvino_c.dll");
💡 Tip: Windows usually auto-detects. For Linux/macOS, if you encounter
DllNotFoundException, ensure the corresponding platform'sOpenVINO.runtime.xxxNuGet package is installed, or manually specify the library path.
Async Inference (Recommended for High Concurrency)
// Start async inference
request.start_async();
// Wait for completion (with timeout)
bool completed = request.wait_for(5000); // 5 second timeout
if (completed)
{
var output = request.get_output_tensor();
// Process results...
}
Using Object Pool (Batch Processing)
// Create inference request pool
using var pool = new InferRequestPool(compiledModel, initialSize: 4, maxSize: 16);
// Execute inference using object pool
pool.RunInference(
request => request.set_input_tensor(input),
request =>
{
var output = request.get_output_tensor();
ProcessResults(output);
}
);
Zero-Copy Tensor Operations (High Performance Mode)
// Use Span<T> to directly access underlying memory, avoiding array copies
Span<float> data = tensor.get_span<float>();
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] / 255.0f; // In-place normalization
}
🏗️ Project Structure
OpenVINO.CSharp.API/
├── src/OpenVINO.CSharp.API/ # Source code
│ ├── core/ # Core classes (Core, Tensor, InferRequest, etc.)
│ ├── preprocess/ # Preprocessing (PrePostProcessor)
│ ├── extensions/ # Extensions (Benchmark, Utils)
│ ├── native/ # C API P/Invoke declarations
│ └── Internal/ # Internal utility classes
├── samples/ # Sample projects
│ ├── Yolo26Det-net4.6/ # .NET Framework 4.6 sample
│ ├── Yolo26Det-net4.8/ # .NET Framework 4.8 sample
│ ├── Yolo26Det-netcoreapp3.1/# .NET Core 3.1 sample
│ └── Yolo26Det-net10.0/ # .NET 10.0 sample
├── docs/ # Documentation configuration
├── .github/workflows/ # CI/CD workflows
└── README.md # This file
🔧 Build Project
Requirements
- .NET SDK 5.0 or higher (or Visual Studio 2019+)
- OpenVINO Runtime 2026.2+
Build Steps
# Clone repository
git clone https://github.com/guojin-yan/OpenVINO-CSharp-API.git
cd OpenVINO-CSharp-API
# Restore dependencies
dotnet restore
# Build project
dotnet build -c Release
# Pack NuGet package
dotnet pack -c Release
📝 Logging Configuration
using OpenVinoSharp.Internal;
// Set minimum log level
OvLogger.MinLevel = LogLevel.DEBUG;
// Enable timestamps
OvLogger.EnableTimestamp = true;
// Set custom log callback (integrate with NLog/Serilog, etc.)
OvLogger.SetCallback((level, message) =>
{
Console.WriteLine($"[{level}] {message}");
});
🛠️ Supported Model Formats
| Format | Extension | Description |
|---|---|---|
| OpenVINO IR | .xml + .bin | Recommended format, best Intel optimization |
| ONNX | .onnx | Universal format, supported by major frameworks |
| PaddlePaddle | .pdmodel | Baidu PaddlePaddle models |
💻 System Requirements
| Platform | Minimum Version | Supported Architectures |
|---|---|---|
| Windows | Windows 10+ | x64, x86 |
| Linux | Ubuntu 18.04+ / CentOS 7+ | x64, ARM64 |
| macOS | 10.15+ | x64, ARM64 |
🤝 How to Contribute
Contributions via Issue and Pull Request are welcome!
- Fork this repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 License
This project is open-sourced under the Apache-2.0 License.
🙏 Acknowledgments
- Intel OpenVINO - Powerful inference framework
📮 Contact
- GitHub: @guojin-yan
- NuGet: JYPPX.OpenVINO.CSharp.API
📢 Software Statement
1. Open Source License Statement
All open-source project code from the author is released under the Apache License 2.0.
Special Note: This project integrates several third-party libraries. If any third-party library's license conflicts with or differs from the Apache 2.0 license, the original license of that third-party library shall prevail. This project does not contain nor represent authorization statements for these third-party libraries. Please be sure to read and comply with the relevant licenses of third-party libraries before use.
2. Code Development and Quality Statement
- AI-Assisted Development: This code was generated and optimized using artificial intelligence (AI) assistance during development and was not entirely written manually line by line.
- Security Commitment: The author solemnly declares that there are absolutely no intentionally set backdoors, viruses, trojans, or malicious code designed to damage user devices or steal data in this code.
- Technical Limitations: Due to the author's personal technical level and capabilities, there may be low-level issues in the code caused by non-rigorous logic, insufficient optimization, or lack of experience (such as but not limited to memory leaks, occasional crashes, unreleased resources, etc.). These issues are purely due to insufficient capability and are not intentional.
- Test Coverage: Due to limited author energy, this software has not undergone comprehensive testing covering all edge cases.
3. Disclaimer (Important)
Please be sure to conduct thorough and rigorous testing and verification before applying this code to any actual projects (especially commercial, industrial, or mission-critical environments). Given the potential code defects and insufficient test coverage mentioned above, the author is not responsible for any direct or indirect losses caused by using this code (including but not limited to equipment failure, data loss, system paralysis, or profit loss, etc.). Once you start using this code, it means you are aware of the above risks and agree to bear all consequences yourself. Related issues have nothing to do with this author.
4. Code Open Source Scope
This project promises that the core logic code is completely open source, but the binary files, source code, or related resources of the aforementioned "third-party libraries" are not within the open source obligations of this project. Please obtain them according to their respective guidelines.
5. Community and Feedback
Despite the above shortcomings, we still welcome everyone to download and use, submit Issues, or participate in testing to jointly improve the project. If you discover bugs, memory overflow, or have improvement suggestions during use, please contact the author through the contact information provided on the project homepage. We will try our best to provide assistance within limited time.

Copyright © 2026 Guojin Yan. All Rights Reserved.