[C#]winform使用纯opencvsharp部署yolo26-cls图像分类的onnx模型


【算法介绍】

使用纯OpenCvSharp部署YOLO26-CLS图像分类模型是一项复杂的任务,但可以通过以下步骤实现:

  1. 准备环境:首先,确保开发环境已安装OpenCvSharp和必要的.NET框架,如VS2019和.NET Framework 4.7.2。同时,需要YOLOv11的ONNX模型文件、配置文件(描述模型架构)和类别名称文件。
  2. 加载模型:使用OpenCvSharp的DNN模块加载YOLO26-CLS的ONNX模型。这通常涉及将模型文件路径传递给DNN模块的相关函数。
  3. 预处理图像:对输入图像进行预处理,如调整大小、归一化等,以满足模型的输入要求。
  4. 推理与后处理:将预处理后的图像输入到模型中,获取分类结果。对结果进行后处理,包括解析输出、应用非极大值抑制(如果需要)等,以获得最终的分类结果。
  5. 显示结果:将分类结果显示在界面上,可以通过OpenCvSharp的图像显示功能实现。

值得注意的是,YOLO26是一个复杂的模型,其输出可能包含多个层的信息,因此需要仔细解析模型输出,并根据YOLO26的具体实现进行后处理。此外,由于OpenCvSharp的DNN模块对ONNX的支持可能有限,某些YOLO26的特性可能无法在OpenCvSharp中直接实现。在这种情况下,可能需要寻找替代方案,如使用其他深度学习库来加载和运行模型,并通过C#接口与这些库进行交互。

总之,使用纯OpenCvSharp部署YOLO26-CLS图像分类模型需要深入理解YOLO26的模型架构、OpenCvSharp的DNN模块以及ONNX格式。

【效果展示】

【界面设计和调用模型代码】

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(); Yolo26ClsManager ym = new Yolo26ClsManager(); 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(src,result); pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap } private void Form1_Load(object sender, EventArgs e) { ym.LoadWeights(Application.StartupPath+ "\\weights\\yolo26n-cls.onnx", Application.StartupPath + "\\weights\\labels.txt"); } private void btn_video_Click(object sender, EventArgs e) { var detector = new Yolo26ClsManager(); detector.LoadWeights(Application.StartupPath + "\\weights\\yolo26n-cls.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(frame,result); 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(); } } }


【测试环境】

vs2019

net framework4.7.2

opencvsharp4.8.0

使用opencv作为推理引擎,CPU推理无需安装cuda+cudnn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何把updater_sample 加在系统入口,

可用点击进去?现在就是代码有,但是并没有编译到系统里?为什么在 P.mk 里加能起作用?•继承链关系:从您提供的 P.mk 内容来看,它已经包含了 Kit、Term 等你们项目的核心 App。这意味着这个 P.mk 文件一定被某…

dinput8.dll文件丢失找不到如何修复? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

韩国团队成功打印垂直纳米激光器

在与浦项科技大学(POSTECH)携手开展的联合研究团队项目中,韩国科学技术院(KAIST)成功开发出一项名为KAIST/POSTECH的项目成果——一种超细3D打印技术。此技术无需复杂处理,便能实现高密度光计算半导体的打印…

智子阴影下的多维战场:AI测试的“降维打击”与升维防御

来自高维的“锁死”警示《三体》中的智子,作为被高维文明改造后的微观粒子,其恐怖之处不在于直接的毁灭力量,而在于其‌降维操控‌的能力:它能蜷缩维度潜入地球,以接近光速运动形成无处不在的监控网络,干扰…

【tensorRT从零起步高性能部署】16-TensorRT基础-核心组件、关键类、核心函数

全面、详细地理解TensorRT的核心组件、关键类和核心函数的定义、作用及使用方式,这是掌握TensorRT进行深度学习模型推理加速的核心基础。下面我会从核心组件(概念层)、核心类(API层)、核心函数(使用层&…

自己写一个智能体-使用MCP服务

我们提到,智能体之所以比单纯的语言模型强大,是因为它拥有了“手”和“脚”——也就是使用工具的能力。 智能体 大语言模型(大脑) 规划(前额叶) 工具(手脚) 理论说得再多&#xf…

在家也能批量做爆款短视频!MoneyPrinterTurbo+cpolar让你告别手动剪辑!

MoneyPrinterTurbo 是一款面向内容创作者的 AI 短视频自动化生成工具,核心功能覆盖从主题输入到成品输出的全流程 —— 依托通义千问、DeepSeek 等大模型自动撰写脚本,从 Pexels 抓取无版权高清素材,搭配多音色 TTS 配音和智能字幕生成&#…

AI Agent 深度解析:原理、架构与未来应用浪潮

1.什么是 AI Agent大语言模型(LLM)最基础且广为人知的应用形式是作为聊天机器人(ChatBot),以问答模式与用户交互。典型代表如 ChatGPT、DeepSeek、通义千问等,均采用“一问一答”的方式响应用户请求。例如&…

三分钟说清楚 ReAct Agent 的技术实现

ReAct Agent 技术实现主要依赖于精心设计的 Prompt 模板、输出解析器和执行循环三大核心机制。1. 核心 Prompt 工程LangChain 使用特定的 Prompt 模板引导 LLM 按 Thought → Action → Observation 格式输出:# 简化的 Prompt 结构 template """ 用…

新一代AI直播场控系统,实现全平台高效管理,带完整的搭建部署教程

温馨提示:文末有资源获取方式面对多平台并存的直播生态,主播们常常疲于在不同软件间切换,难以形成统一的互动风格与运营策略。我们专为应对这一挑战,设计出全新一代AI自动场控机器人源码系统。本系统的核心理念在于“聚合”与“统…

什么是AI 智能体(Agent)

在当今的 AI 浪潮中,我们经常听到“Agent(智能体)”这个词。但实际上,一个能够自主解决问题的 AI Agent 到底是如何工作的?它不仅仅是一个聊天机器人,更是一个拥有“手脚”和“神经系统”的复杂架构。什么是…

[MindSpore进阶] 摆脱 Model.train:详解函数式自动微分与自定义训练循环

在 MindSpore 的日常开发中,很多初学者习惯使用 Model.train接口进行模型训练。这在运行标准模型时非常方便,但在科研探索或需要复杂的梯度控制(如对抗生成网络 GAN、强化学习或自定义梯度裁剪)时,高层 API 就显得不够…

[MindSpore进阶] 玩转昇腾算力:从自定义训练步到 @jit 图模式加速实战

摘要: 在昇腾(Ascend)NPU上进行模型训练时,我们往往不满足于高层封装的 Model.train接口。为了实现更复杂的梯度控制、梯度累积或混合精度策略,自定义训练循环是必经之路。本文将以 MindSpore 2.x 的函数式编程范式为基…

学长亲荐9个AI论文写作软件,本科生毕业论文必备!

学长亲荐9个AI论文写作软件,本科生毕业论文必备! 1.「千笔」—— 一站式学术支持“专家”,从初稿到降重一步到位(推荐指数:★★★★★)在论文写作过程中,许多同学都面临一个难题:如何…

从 “文献堆” 到 “综述稿”:paperxie 如何让学术写作的第一步就躺赢?paperxie 文献综述

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippt https://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewed 当你坐在电脑前,盯着 “文献综述” 四个字发呆…

解锁论文写作高效秘籍:Paperxie助力文献综述轻松搞定paperxie文献综述

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippt https://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewed 在学术的浩瀚海洋中,撰写论文是每一位学者和学…

基于.NET和C#构建光伏IoT物模型方案

一、目前国内接入最常见、最有代表性的 4 类光伏设备二、华为 SUN2000 逆变器通讯报文示例 这是一个标准 Modbus TCP 请求报文: 00 01 00 00 00 06 01 03 75 30 00 06 含义: Modbus TCP 报文由两部分组成: MBAP Header(7字节&…

Labview解析CAN报文与发送CAN基于DBC文件及dll说明文档的功能演示 (适用于20...

Labview 用DBC文件解析CAN报文以及DBC格式发送CAN,调用的dll有说明文档。 2013,2016,2019版本。 参考程序后续可以自己改动。LabVIEW作为一款功能强大的图形化编程工具,在汽车电子领域有着广泛的应用,尤其是在CAN总线通…

React Native for OpenHarmony 实战:Sound 音频播放详解

React Native for OpenHarmony 实战:Sound 音频播放详解 摘要 本文深入探讨React Native在OpenHarmony平台上的音频播放实现方案。通过对比主流音频库react-native-sound和expo-av的适配表现,结合OpenHarmony音频子系统的特性,提供完整的音…

智能直播新时代,AI场控系统全面解析,打造高效互动直播间

温馨提示:文末有资源获取方式在当今数字化直播浪潮中,主播们面临观众互动、内容管理和粉丝维护的多重挑战。为此,我们推出一款创新的AI自动场控机器人源码系统,旨在通过先进技术整合,构建一个智能化、自动化的直播环境…