%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 | 简体中文
英特尔发行版 OpenVINO™工具套件基于oneAPI 而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程, OpenVINO™可赋能开发者在现实世界中部署高性能应用程序和算法。
OpenVINO C# API 是 Intel OpenVINO 的 .NET 封装库,让 C# 开发者能够在 Windows、Linux、macOS 上高性能运行深度学习模型推理,支持 YOLO、ResNet、BERT 等主流模型。
当前推出的最新版本为 OpenVINO™ C# API 3.2,该版本在 3.1 版本上通过AI大模型进行了进一步更新,完善了所有测试代码,并改进了一些错误,后续将根据最新版推出相关的案例项目与应用。
最后,如果各位在使用中有什么问题,可以与我沟通联系,也欢迎广大C#开发者加入到OpenVINO™ C# API 开发中。
┌─────────────────────────────────────────────────────────────────────────┐
│ 一句话了解 │
│ ───────────────────────────────────────────────────────────────────── │
│ 用 C# 跑 AI 模型推理,跨平台、高性能、支持 .NET 4.6 到 .NET 10.0 │
├─────────────────────────────────────────────────────────────────────────┤
│ 四大核心优势 │
│ ───────────────────────────────────────────────────────────────────── │
│ 🚀 高性能 │ Span<T> 零拷贝内存,推理速度媲美 Python/C++ │
│ 🖥️ 跨平台 │ Windows/Linux/macOS,x64/ARM64 全支持 │
│ 🔄 异步化 │ async/await 异步推理,轻松应对高并发场景 │
│ 🔌 多设备 │ Intel CPU/iGPU/GPU/NPU,AMD CPU(部分支持) │
├─────────────────────────────────────────────────────────────────────────┤
│ 适用场景 │
│ ───────────────────────────────────────────────────────────────────── │
│ 目标检测(YOLO) │ 图像分类(ResNet) │ OCR │ 人脸识别 │ 语音合成 │ NLP │
└─────────────────────────────────────────────────────────────────────────┘
🚀 30 秒上手
1. 安装 NuGet 包
dotnet add package OpenVINO.CSharp.API
dotnet add package OpenVINO.runtime.win
(第二个包在不同平台设备需要安装不同的包)
2. 写推理代码
using OpenVinoSharp;
// 加载模型(支持 .xml/.onnx等格式)
using var core = new Core();
var model = core.compile_model("yolov8n.xml", "CPU");
// 创建推理请求并执行
using var request = model.create_infer_request();
request.set_input_tensor(new Tensor(shape, imageData));
request.infer();
// 获取检测结果
var output = request.get_output_tensor().get_data<float>();
3. 运行程序
dotnet run
📚 查看完整 YOLO 案例(包含 .NET 4.6/4.8/Core 3.1/10.0 四个版本)
📖 详细文档
| 资源 | 链接 | 说明 |
|---|---|---|
| API 文档 | guojin-yan.github.io/OpenVINO-CSharp-API | 完整的类库参考 |
| 案例源码 | samples/ | 4 个框架版本的 YOLO 检测案例 |
| NuGet 包 | nuget.org/packages/JYPPX.OpenVINO.CSharp.API | 最新版本下载 |
✨ 完整特性列表
| 特性 | 说明 | 适用框架 |
|---|---|---|
| 🚀 多框架支持 | 支持 .NET Framework 4.6-4.8 和 .NET 5.0-10.0 | 全部 |
| 🖥️ 跨平台 | Windows、Linux、macOS 全平台支持 | 全部 |
| ⚡ 高性能 | Span<T>/Memory<T> 零拷贝内存操作 |
.NET Core 2.1+ / .NET 4.7.2+ |
| 🔄 异步推理 | 完整的 async/await 异步推理支持 | .NET Core 3.0+ |
| 💾 模型缓存 | 自动缓存编译后的模型,避免重复编译 | 全部 |
| 🏊 对象池 | 推理请求对象池,减少频繁创建销毁的开销 | 全部 |
| 📝 完整日志 | 可配置的多级别日志系统 | 全部 |
| 🌍 双语注释 | 完整的中英文 XML 文档注释 | 全部 |
📦 NuGet Package
Core Managed Libraries
| Package | Description | Link |
|---|---|---|
| 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 |
🚀 更多使用示例
初始化与动态库加载(必看)
using OpenVinoSharp;
// 方式1:自动加载(推荐)
// Core 会自动加载 OpenVINO 动态库,但需要先安装运行时包:
// NuGet: OpenVINO.runtime.win / OpenVINO.runtime.ubuntu / OpenVINO.runtime.macos等,具体根据自己设备安装
using var core = new Core();
// 方式2:手动指定动态库路径(Linux/macOS 等自定义安装场景)
// 如果未安装运行时包,或动态库不在默认搜索路径,需手动初始化
// Linux 示例:
Ov.Initialize("/opt/intel/openvino/lib/openvino_c.so");
// Linux 环境变量设置(如需永久生效,添加到 ~/.bashrc):
// export LD_LIBRARY_PATH=/opt/intel/openvino/lib:$LD_LIBRARY_PATH
// Windows 示例:
Ov.Initialize(".\dll\win-x64/openvino_c.dll");
💡 提示:Windows 通常自动识别,Linux/macOS 若遇到
DllNotFoundException,请确保已安装对应平台的OpenVINO.runtime.xxxNuGet 包,或手动指定库路径。
异步推理(推荐用于高并发)
// 启动异步推理
request.start_async();
// 等待完成(带超时)
bool completed = request.wait_for(5000); // 5秒超时
if (completed)
{
var output = request.get_output_tensor();
// 处理结果...
}
使用对象池(批量处理场景)
// 创建推理请求池
using var pool = new InferRequestPool(compiledModel, initialSize: 4, maxSize: 16);
// 使用对象池执行推理
pool.RunInference(
request => request.set_input_tensor(input),
request =>
{
var output = request.get_output_tensor();
ProcessResults(output);
}
);
零拷贝 Tensor 操作(高性能模式)
// 使用 Span<T> 直接访问底层内存,避免数组拷贝
Span<float> data = tensor.get_span<float>();
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] / 255.0f; // 原地归一化
}
🏗️ 项目结构
OpenVINO.CSharp.API/
├── src/OpenVINO.CSharp.API/ # 源代码
│ ├── core/ # 核心类 (Core, Tensor, InferRequest等)
│ ├── preprocess/ # 预处理 (PrePostProcessor)
│ ├── extensions/ # 扩展功能 (Benchmark, Utils)
│ ├── native/ # C API P/Invoke 声明
│ └── Internal/ # 内部工具类
├── samples/ # 示例项目
│ ├── Yolo26Det-net4.6/ # .NET Framework 4.6 示例
│ ├── Yolo26Det-net4.8/ # .NET Framework 4.8 示例
│ ├── Yolo26Det-netcoreapp3.1/# .NET Core 3.1 示例
│ └── Yolo26Det-net10.0/ # .NET 10.0 示例
├── docs/ # 文档配置
├── .github/workflows/ # CI/CD 工作流
└── README.md # 本文件
🔧 构建项目
环境要求
- .NET SDK 5.0 或更高版本(或 Visual Studio 2019+)
- OpenVINO Runtime 2025.4+
构建步骤
# 克隆仓库
git clone https://github.com/guojin-yan/OpenVINO-CSharp-API.git
cd OpenVINO-CSharp-API
# 还原依赖
dotnet restore
# 构建项目
dotnet build -c Release
# 打包 NuGet 包
dotnet pack -c Release
📝 日志配置
using OpenVinoSharp.Internal;
// 设置最小日志级别
OvLogger.MinLevel = LogLevel.DEBUG;
// 启用时间戳
OvLogger.EnableTimestamp = true;
// 设置自定义日志回调(集成 NLog/Serilog 等)
OvLogger.SetCallback((level, message) =>
{
Console.WriteLine($"[{level}] {message}");
});
🛠️ 支持的模型格式
| 格式 | 扩展名 | 说明 |
|---|---|---|
| OpenVINO IR | .xml + .bin | 推荐格式,Intel 优化最佳 |
| ONNX | .onnx | 通用格式,主流框架都支持导出 |
| PaddlePaddle | .pdmodel | 百度飞桨模型 |
💻 系统要求
| 平台 | 最低版本 | 支持架构 |
|---|---|---|
| Windows | Windows 10+ | x64, x86 |
| Linux | Ubuntu 18.04+ / CentOS 7+ | x64, ARM64 |
| macOS | 10.15+ | x64, ARM64 |
🤝 如何贡献
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
📄 许可证
本项目采用 Apache-2.0 License 开源。
🙏 致谢
- Intel OpenVINO - 强大的推理框架
📮 联系方式
- GitHub: @guojin-yan
- NuGet: OpenVINO.CSharp.API
📢软件声明
1. 开源协议声明
作者所有开源项目代码均遵循 Apache License 2.0 开源协议。
特别说明:本项目集成了若干第三方库。若任何第三方库的许可协议与 Apache 2.0 协议存在冲突或不一致,均以该第三方库的原始许可协议为准。本项目不包含也不代表这些第三方库的授权声明,使用前请务必阅读并遵守第三方库的相关许可。
2. 代码开发与质量说明
- AI 辅助开发:本代码在开发过程中使用了人工智能(AI)辅助生成与优化,并非完全由人工逐行编写。
- 安全性承诺:作者郑重声明,本代码中绝无任何有意设置的后门、病毒、木马或旨在破坏用户设备、窃取数据的恶意代码。
- 技术局限性:受限于作者个人的技术水平与能力,代码中可能存在因逻辑不严谨、优化不足或经验欠缺导致的低级问题(例如但不限于内存泄漏、偶发崩溃、资源未释放等)。这些问题纯属能力不足所致,并非主观故意。
- 测试范围:由于作者精力有限,未对本软件进行全方位、覆盖所有边缘场景的完整测试。
3. 免责声明(重要)
请在将本代码应用于任何实际项目(特别是商业、工业或关键任务环境)之前,务必进行详尽、严格的自行测试与验证。 鉴于上述可能存在的代码缺陷及测试覆盖不足,因使用本代码而导致的任何直接或间接损失(包括但不限于设备故障、数据丢失、系统瘫痪或利润损失等),本作者概不负责。 一旦您开始使用本代码,即表示您已知晓上述风险并同意自行承担一切后果,相关问题与本作者无关。
4. 代码开源范围
本项目承诺核心逻辑代码完全开源,但上述提到的“第三方库”的二进制文件、源代码或相关资源不在本项目的开源义务范围内,请根据其各自的指引获取。
5. 社区与反馈
尽管存在上述不足,我们仍欢迎大家下载使用、提交 Issue 或参与测试,共同完善项目。如果您在使用过程中发现 Bug、内存溢出或有改进建议,欢迎通过项目主页提供的联系方式与作者取得联系,我们将尽力在有限的时间内提供协助。

Copyright © 2026 Guojin Yan. All Rights Reserved.