[C#]C# winform部署yolov12目标检测的onnx模型

ops/2025/2/23 1:26:37/

yolov12官方框架:github.com/sunsmarterjie/yolov12

【测试环境】

vs2019

netframework4.7.2

opencvsharp4.8.0

onnxruntime==1.16.3

【效果展示】

【调用代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;namespace FIRC
{public partial class Form1 : Form{Mat src = new Mat();Yolov12Manager ym = new Yolov12Manager();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";openFileDialog.RestoreDirectory = true;openFileDialog.Multiselect = false;if (openFileDialog.ShowDialog() == DialogResult.OK){src = Cv2.ImRead(openFileDialog.FileName);pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);}}private void button2_Click(object sender, EventArgs e){if(pictureBox1.Image==null){return;}Stopwatch sw = new Stopwatch();sw.Start();var result = ym.Inference(src);sw.Stop();this.Text = "耗时" + sw.Elapsed.TotalSeconds + "秒";var resultMat = ym.DrawImage(result,src);pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap}private void Form1_Load(object sender, EventArgs e){ym.LoadWeights(Application.StartupPath+ "\\weights\\yolov12n.onnx", Application.StartupPath + "\\weights\\labels.txt");}private void btn_video_Click(object sender, EventArgs e){var detector = new Yolov12Manager();detector.LoadWeights(Application.StartupPath + "\\weights\\yolov12n.onnx", Application.StartupPath + "\\weights\\labels.txt");VideoCapture capture = new VideoCapture(0);if (!capture.IsOpened()){Console.WriteLine("video not open!");return;}Mat frame = new Mat();var sw = new Stopwatch();int fps = 0;while (true){capture.Read(frame);if (frame.Empty()){Console.WriteLine("data is empty!");break;}sw.Start();var result = detector.Inference(frame);var resultImg = detector.DrawImage(result,frame);sw.Stop();fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);sw.Reset();Cv2.PutText(resultImg, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);//显示结果Cv2.ImShow("Result", resultImg);int key = Cv2.WaitKey(10);if (key == 27)break;}capture.Release();}}
}

 

【运行步骤】

(1)首先依据官方安装教程或者其他网站给的安装教程,安装好yolov12环境

(2)下载模型:yolov12n.pt或者直接下载yolov12n.onnx
(3)导出onnx模型:yolo export model=yolov12n.pt format=onnx dynamic=False opset=12
(4)然后将yolov12.onnx模型放进FIRC\bin\x64\Debug\weights
最后运行项目选择x64 Debug即可,由于初次运行可能报错,如果报错请查看blog.csdn.net/FL1623863129/article/details/135424751
解决方法

【视频演示】

www.bilibili.com/video/BV1RVAbeqEXa/


http://www.ppmy.cn/ops/160647.html

相关文章

【第一节】C++设计模式(创建型模式)-工厂模式

目录 前言 一、面向对象的两类对象创建问题 二、解决问题 三、工厂模式代码示例 四、工厂模式的核心功能 五、工厂模式的应用场景 六、工厂模式的实现与结构 七、工厂模式的优缺点 八、工厂模式的扩展与优化 九、总结 前言 在面向对象系统设计中,开发者常…

deepseek-v3在阿里云和腾讯云的使用中的差异

随着deepseek在各大云商上线,试用了下阿里云和腾讯云的deepseek服务,在回答经典数学问题9.9和9.11谁大时,发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…

腾讯云开源Deepseek-V3与R1大模型API免费使用 + Chatbox本地化部署指南:从零到一的AI探索之旅

近年来,人工智能(AI)技术的快速发展让越来越多的开发者、企业和个人能够轻松接触到前沿的AI模型。腾讯云最近开源了Deepseek-V3和R1大模型,并提供了免费的API接口,同时还发布了Chatbox本地化部署指南,让开发…

网络安全评估指南 网络安全评价体系

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络安全协议 一. 美国可信计算机系统评价标准(TCSEC) TCSEC标准是计算机系统安全评估的第一个正式标准,具有划时代的意义。该准则于1970年由美国国…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_test_full_name

ngx_test_full_name 声明在 src\core\ngx_file.c static ngx_int_t ngx_test_full_name(ngx_str_t *name); 定义在 src\core\ngx_file.c static ngx_int_t ngx_test_full_name(ngx_str_t *name) { #if (NGX_WIN32)u_char c0, c1;c0 name->data[0];if (name->len <…

超多目标优化:基于导航变量的多目标粒子群优化算法(NMOPSO)的无人机三维路径规划,MATLAB代码

一、基于导航变量的多目标粒子群优化算法&#xff08;NMOPSO&#xff09;介绍 基于导航变量的多目标粒子群优化算法&#xff08;Navigation variable-based multi-objective particle swarm optimization&#xff0c;NMOPSO&#xff09;是2025年提出的一种用于无人机路径规划的…

Redis复制性能优化利器:深入解析replica-lazy-flush参数

Redis复制性能优化利器&#xff1a;深入解析replica-lazy-flush参数 在Redis的主从复制场景中&#xff0c;你是否遇到过这些情况&#xff1f; 主从全量同步时从节点长时间不可用大数据量同步期间出现连接超时内存使用量在同步期间突然飙升 这些问题的解决方案可能就藏在repl…

Redis-线程模型

线程模型 前言单线程模型一次客户端与Redis完整通信过程建立连接执行一个set请求为什么选择单线程多线程就不行吗 I/O多路复用模型基本的IO模型非阻塞模式IO多路复用 多线程模型 前言 Redis 的线程模型其实是分两块的&#xff1a; Redis 6.0 之前的单线程模型。其实从 4.0 开始…