C#调用ONNX:python转C++转C#界面流程
假设python代码脚本是对一张图片进行处理,接受一张图片路径,返回检测后的图片路径(Base64编码)# 随机输入 (batch=1, channels=3, 640x640)C# 界面直接调用检测函数,不用管理 OpenCV/ONNX 细节。VS2022 属性页配置截图(包含目录、库目录、依赖项)print("✅ 模型已导出:model.onnx")这是最简单的模板,方便先写代码测试模型是否
C#调用ONNX:python转C++转C#界面流程
- python部分(检测模型的代码函数)Python到处ONNX模型
假设python代码脚本是对一张图片进行处理,接受一张图片路径,返回检测后的图片路径(Base64编码)
Python的代码:
import torch
from ultralytics import YOLO
# 载入模型
model = YOLO("your_model.pt")
# 随机输入 (batch=1, channels=3, 640x640)
dummy_input = torch.randn(1, 3, 640, 640)
# 导出到 ONNX
torch.onnx.export(
model.model,
dummy_input,
"model.onnx",
opset_version=12,
input_names=["images"],
output_names=["output"],
dynamic_axes={"images": {0: "batch"}, "output": {0: "batch"}}
)
print("✅ 模型已导出:model.onnx")
- C++使用ONNXRuntime进行推理
在VS2022项目中,新建项目:
跑通 ONNX 推理:
选择:
- 控制台应用程序(Console Application)
- 语言:C++
- 平台:x64
这是最简单的模板,方便先写代码测试模型是否能跑。(VS2022 → C++ → 控制台应用程序(Console Application))
后续做成 DLL 给 C# 调用:
选择:
- 动态链接库(Dynamic-Link Library)
- 语言:C++
- 平台:x64
然后:
- 导出一个 extern "C" 的函数供 C# 调用
- 在 DLL 中完成 ONNXRuntime 加载、检测、绘制检测结果
(1)先用 Console Application
- 写 ONNXRuntime + OpenCV 测试代码
- 确认推理结果、检测框绘制都正确
(2)再新建 DLL 项目
- 把测试代码封装成函数
- 用 [DllImport] 在 C# 里调用
VS2022项目属性配置:OpenCV配置
VS2022 属性页配置截图(包含目录、库目录、依赖项)
- C++的动态链接库(DLL)
1· 打开 VS2022 → 新建项目
2· 选择 C++ → 动态链接库(DLL)
3· 平台选 x64
4.在C#作为UI界面调用DLL
C++ DLL 内部完成 ONNXRuntime 推理
C# 界面直接调用检测函数,不用管理 OpenCV/ONNX 细节
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)