当前位置: 首页 > article >正文

目前在工业 C# 上位机中使用最广泛的 YOLOv8 实时检测代码模板

以下是一套目前在工业 C# 上位机中使用最广泛的YOLOv8 实时检测代码模板2025 年最新稳定写法。usingMicrosoft.ML.OnnxRuntime;usingMicrosoft.ML.OnnxRuntime.Tensors;usingOpenCvSharp;usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceYoloV8LiveDemo{publicpartialclassMainForm:Form{privateVideoCapturecap;privateInferenceSessionsession;privateconstintINPUT_SIZE640;// YOLOv8 官方默认 640也可改 416/320 提速privatereadonlyTimertimernew(){Interval40};// 目标 25 fps// 你自己的类别按模型训练时的顺序写privatereadonlystring[]classNamesnew[]{person,bicycle,car,motorcycle,airplane,bus,train,truck,boat,traffic light,fire hydrant,/* ... */toothbrush};publicMainForm(){InitializeComponent();InitCamera();InitYolo();timer.Tickasync(_,_)awaitProcessFrameAsync();timer.Start();}privatevoidInitCamera(){// 0 默认 USB 摄像头可改为 1、2 或 RTSP 地址capnewVideoCapture(0,VideoCaptureAPIs.DSHOW);// cap new VideoCapture(rtsp://admin:123456192.168.1.100:554/h264/ch1/main/av_stream);if(!cap.IsOpened()){MessageBox.Show(无法打开摄像头);Close();}}privatevoidInitYolo(){varoptnewSessionOptions{IntraOpNumThreadsEnvironment.ProcessorCount/2,GraphOptimizationLevelGraphOptimizationLevel.ORT_ENABLE_ALL,EnableMemPatterntrue};// 优先尝试 DirectML核显加速失败回退 CPUtry{opt.AppendExecutionProvider_DML(0);}catch{// 回退 CPU}sessionnewInferenceSession(yolov8n.onnx,opt);}privateasyncTaskProcessFrameAsync(){usingvarframenewMat();if(!cap.Read(frame))return;// 推理放在后台线程避免阻塞 UIvardetectionsawaitTask.Run(()Detect(frame));// UI 更新必须在主线程BeginInvoke((){usingvarannotatedDrawDetections(frame,detections);pictureBox1.Image?.Dispose();pictureBox1.Imageannotated.ToBitmap();lblStatus.Textdetections.Count0?$检测到{detections.Count}个目标:未检测到目标;});}/// summary/// YOLOv8 推理核心函数最简通用版/// /summaryprivateListDetectionDetect(Matframe){usingvarresizedframe.Resize(newSize(INPUT_SIZE,INPUT_SIZE));usingvarblobCv2.Dnn.BlobFromImage(resized,1f/255f,newSize(INPUT_SIZE,INPUT_SIZE),swapRB:true);vartensornewDenseTensorfloat(blob.GetDatafloat(),[1,3,INPUT_SIZE,INPUT_SIZE]);usingvarinputsnew[]{NamedOnnxValue.CreateFromTensor(images,tensor)};usingvarresultssession.Run(inputs);// YOLOv8 输出为 [1, 84, n] 或 [1, 4 num_classes, n] 格式varoutputresults[0].AsTensorfloat();returnPostProcess(output,frame.Width,frame.Height);}/// summary/// YOLOv8 后处理NMS 坐标还原/// /summaryprivateListDetectionPostProcess(Tensorfloatoutput,intorigW,intorigH){vardetectionsnewListDetection();introwsoutput.Dimensions[1];// 通常 84intcolsoutput.Dimensions[2];// 检测框数量for(inti0;icols;i){// 取置信度最高的那一类floatmaxConf0f;intbestClass-1;for(intc0;cclassNames.Length;c){floatconfoutput[0,4c,i];if(confmaxConf){maxConfconf;bestClassc;}}if(maxConf0.45f)continue;// 置信度阈值// 中心坐标 宽高floatcxoutput[0,0,i];floatcyoutput[0,1,i];floatwoutput[0,2,i];floathoutput[0,3,i];intx(int)((cx-w/2)*origW/INPUT_SIZE);inty(int)((cy-h/2)*origH/INPUT_SIZE);intwidth(int)(w*origW/INPUT_SIZE);intheight(int)(h*origH/INPUT_SIZE);detections.Add(newDetection(newRect(x,y,width,height),maxConf,classNames[bestClass]));}// NMS 非极大值抑制detectionsApplyNMS(detections,iouThreshold:0.45f);returndetections;}privatestaticListDetectionApplyNMS(ListDetectiondetections,floatiouThreshold){detections.Sort((a,b)b.Conf.CompareTo(a.Conf));varkeepnewListDetection();foreach(vardetindetections){boolsuppressedfalse;foreach(varkinkeep){if(IoU(det.Box,k.Box)iouThresholddet.Labelk.Label){suppressedtrue;break;}}if(!suppressed)keep.Add(det);}returnkeep;}privatestaticfloatIoU(Recta,Rectb){intinterXMath.Max(0,Math.Min(a.Right,b.Right)-Math.Max(a.Left,b.Left));intinterYMath.Max(0,Math.Min(a.Bottom,b.Bottom)-Math.Max(a.Top,b.Top));floatinterAreainterX*interY;floatunionAreaa.Width*a.Heightb.Width*b.Height-interArea;returninterArea/unionArea;}privateMatDrawDetections(Matframe,ListDetectiondetections){varimgframe.Clone();foreach(vardindetections){Cv2.Rectangle(img,d.Box,Scalar.Red,2);Cv2.PutText(img,${d.Label}{d.Conf:F2},newPoint(d.Box.X,d.Box.Y-10),HersheyFonts.HersheySimplex,0.7,Scalar.Red,2);}returnimg;}protectedoverridevoidOnFormClosing(FormClosingEventArgse){timer.Stop();cap?.Release();session?.Dispose();base.OnFormClosing(e);}}publicrecordDetection(RectBox,floatConf,stringLabel);}最关键的几点工业级写法说明为什么用 Task.Run 做推理ONNX Runtime 推理是 CPU/GPU 密集型任务如果放在 UI 线程会导致界面卡顿甚至无响应。必须异步执行。为什么用 BeginInvoke 更新 UIWinForms 的控件只能在创建它的线程UI 线程上操作跨线程直接赋值会抛 InvalidOperationException。为什么用 using 包裹 MatOpenCvSharp 的 Mat 是非托管资源不及时 Dispose 会导致内存泄漏长时间运行后程序崩溃。如何进一步提速工业现场常用招数把 INPUT_SIZE 从 640 降到 416 或 320速度提升 50–100%使用 int8 量化模型yolov8n_int8.onnx启用 DirectML核显加速opt.AppendExecutionProvider_DML(0)加跳帧逻辑每 2–3 帧只推理一次用计数器控制如何处理多相机每个相机开一个独立的 Task 独立的 InferenceSession避免锁竞争。快速验证步骤10 分钟跑通新建 WinForms 项目.NET 8安装 OpenCvSharp4 runtime把 yolov8n.onnx 放项目根目录复制上面代码到 Form1.cs运行 → 看到实时画面 检测框即成功如果想继续加功能直接告诉我我可以帮你补充多路摄像头分屏显示自定义类别 颜色映射检测到特定目标后写 PLC 寄存器截图保存 报警日志跳帧 内存优化版祝你快速跑通 YOLOv8 实时检测

相关文章:

目前在工业 C# 上位机中使用最广泛的 YOLOv8 实时检测代码模板

以下是一套目前在工业 C# 上位机中使用最广泛的 YOLOv8 实时检测 代码模板(2025 年最新稳定写法)。 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; us…...

C# 上位机开发与工控通讯实战 的完整、务实、极简版拆解(基于 8 年真实产线经验)

以下是 C# 上位机开发与工控通讯实战 的完整、务实、极简版拆解(基于 8 年真实产线经验)。剔除了所有废话,只保留真正能落地的核心逻辑、关键代码、避坑经验和项目推进路径。适合零基础新人快速上手,也适合有经验的工程师查漏补缺…...

【macOS】精选效率神器!大幅提升办公速度的宝藏软件

目录 01 文本编辑 1.1 Notable 1.2 MarkEdit01 文本编辑 1.1 Notable 🌸 开源轻量化 Markdown 笔记,主打数据可控。 🌸 支持多系统:Linux, Windows, macOS。 🌺 网址为:https://notable.app/ 1.2 MarkEdi…...

Sabaki围棋软件终极指南:免费优雅的围棋对弈与棋谱编辑器

Sabaki围棋软件终极指南:免费优雅的围棋对弈与棋谱编辑器 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki 如果你正在寻找一款既美观又功能强大的围棋软件&…...

CoPaw模型安全与伦理考量:内容过滤、偏见缓解与滥用防范配置指南

CoPaw模型安全与伦理考量:内容过滤、偏见缓解与滥用防范配置指南 1. 为什么企业需要关注AI模型安全 最近几年,AI模型在企业中的应用越来越广泛,但随之而来的安全问题也日益凸显。想象一下,如果你的客服机器人突然说出不当言论&a…...

区块链开发最佳实践

区块链开发最佳实践:构建高效安全的去中心化应用 区块链技术正重塑金融、供应链、医疗等多个领域,但开发过程中面临性能、安全、可扩展性等挑战。掌握最佳实践是确保项目成功的关键。本文将围绕智能合约优化、节点部署策略、数据隐私保护等核心方向&…...

Audiveris终极指南:如何用开源工具快速实现乐谱数字化转换

Audiveris终极指南:如何用开源工具快速实现乐谱数字化转换 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris Audiveris是一款强大的开源光学音乐识别(OMR&#xff…...

GLM-4.1V-9B-Base企业应用:制造业设备图谱识别与故障图文分析案例

GLM-4.1V-9B-Base企业应用:制造业设备图谱识别与故障图文分析案例 1. 制造业设备管理的痛点与机遇 在制造业生产现场,设备管理一直是个令人头疼的问题。想象一下这样的场景:车间主任老王每天要巡检几十台设备,面对复杂的仪表盘、…...

5分钟开启音乐数字化之旅:Audiveris让纸质乐谱瞬间变数字宝藏

5分钟开启音乐数字化之旅:Audiveris让纸质乐谱瞬间变数字宝藏 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris 还在为整理堆积如山的纸质乐谱而烦恼吗?每次想要编…...

Python Web开发入门(二十一):完整前后端项目实战——从零构建企业级电商系统

一、前言:为什么需要一个完整的实战项目? 有读者在评论区问:"学了这么多天,感觉知识点很散,怎么把它们串联起来?" 我的回答是:真正的学习发生在实战中,特别是当你要把多个模块有机组合成一个可运行的系统时。 让我分享一个真实故事:2025年,我带团队重构…...

3大实战场景:dnSpyEx .NET逆向调试与编辑的完整指南

3大实战场景:dnSpyEx .NET逆向调试与编辑的完整指南 【免费下载链接】dnSpy Unofficial revival of the well known .NET debugger and assembly editor, dnSpy 项目地址: https://gitcode.com/gh_mirrors/dns/dnSpy dnSpyEx是一款功能强大的.NET逆向工具&am…...

Qwen3.5-9B-AWQ-4bit网络协议分析小助手:图解HTTP请求与TCP连接过程

Qwen3.5-9B-AWQ-4bit网络协议分析小助手:图解HTTP请求与TCP连接过程 1. 网络协议可视化的新体验 当你第一次学习网络协议时,是否曾被那些抽象的概念和复杂的交互流程困扰?传统的文字描述往往难以直观展现数据包在网络中的流动轨迹。这正是Q…...

电商卖家注意了!萤火AI实测:从抠图到带货视频,一个人搞定整个团队的工作

在电商行业摸爬滚打这么多年,我深知一个真理:“做图难,做视频更难;请美工贵,请摄影团队更贵。” 无论是国内淘系、抖音,还是出海做亚马逊、TikTok,视觉物料永远是转化的第一道门槛。很多时候&a…...

精通猫抓扩展:7个高级配置与流媒体解析实战技巧

精通猫抓扩展:7个高级配置与流媒体解析实战技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch&#xff09…...

OpCore Simplify终极指南:5分钟搞定Hackintosh EFI配置,小白也能轻松上手

OpCore Simplify终极指南:5分钟搞定Hackintosh EFI配置,小白也能轻松上手 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在…...

基于深度学习CNN的智慧电力电缆状态巡检 电力线路覆冰状态 电力线路覆冰检测数据集 电力巡检系统实现覆冰风险自动识别第10413期 (1)

电力线路覆冰检测数据集 README一、数据集核心信息表项目详情类别数量及名称3 类(线、带冰的线、无冰的线路)数据总量110 张数据集格式YOLO 格式核心应用价值1. 支撑电力线路覆冰状态智能检测模型的训练与优化;2. 助力电力巡检系统实现覆冰风…...

AI 日报 - 2026年4月13日

🔬 科技类 5 条1. GPT-6 明天就来了:内部代号"土豆",性能暴涨40%OpenAI 正式官宣,代号"Spud(土豆)"的 GPT-6 将于明天(4月14日)全球同步发布。这款耗时18个月研…...

017、归一化层改进策略:从训练震荡到推理加速的实战调优

017、归一化层改进策略:从训练震荡到推理加速的实战调优 问题现场:BatchNorm在边缘设备上的“水土不服” 上周调试一个YOLO模型部署到Jetson Nano时遇到了诡异现象:训练时mAP达到78.2%,部署后直接掉到62.3%。同一批测试数据,精度断崖式下跌。排查了三天,最终定位到Batc…...

从PTPX报告反推:低频芯片Clock Tree功耗优化的3个关键决策点(含实验数据对比)

低频芯片Clock Tree功耗优化的3个关键决策点与量化分析 在28nm及以下工艺节点的芯片设计中,clock tree动态功耗占比往往超过总功耗的20%。某次流片后的PTPX报告显示,一个运行在200MHz的图像处理芯片中,clock network竟消耗了27.3%的动态功耗—…...

【NX二次开发】字符串操作-截取文件名

//确保路径格式为\\形式char *q strrchr(p, \\;) 1;...

RabbitMQ系列02 - RabbitMQ 消息模型:Broker、交换器、队列与收发路径

RabbitMQ 消息模型:Broker、交换器、队列与收发路径 RabbitMQ 是遵从 AMQP 0-9-1 的消息中间件(Erlang 实现),消息先进入 Exchange(交换器),再按类型与绑定规则路由到 Queue(队列&a…...

VITS快速微调实战:从零到一,打造你的专属AI语音合成模型

1. 为什么你需要专属AI语音合成 最近两年AI语音合成技术突飞猛进,从机械的电子音到如今几乎可以以假乱真的人声,这个变化让我这个玩了十年语音合成的老玩家都感到震惊。VITS作为当前最先进的端到端语音合成模型之一,最大的魅力在于它不仅能生…...

别急着重装Anaconda!试试这个‘注册表修复’大法,让Jupyter Notebook秒回开始菜单

深度解析:Anaconda快捷方式消失的真相与高效修复方案 每次重装Windows系统后,许多开发者都会遇到一个令人头疼的问题——原本好好的Anaconda和Jupyter Notebook快捷方式从开始菜单神秘消失了。大多数人第一反应是重装整个Anaconda,但这不仅耗…...

电能量数据质量“体检+病灶定位”管理体系与工程化实践

目录 一、引言:电能量数据质量的现实痛点与治理刚需 二、总体架构:“体检+病灶定位”闭环管理模式 三、数据质量“体检套餐”设计(六性指标+评分模型) 3.1 六维核心评价指标(六性指标) 3.2 标准化体检流程(六步法) 3.3 全面CT扫描:质量评估计算引擎 四、体检报告…...

别让AI代码,变成明天的技术债靠

如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

DeepSeek-R1-Distill-Qwen-1.5B实战教程:Python调用与流式对话实现

DeepSeek-R1-Distill-Qwen-1.5B实战教程:Python调用与流式对话实现 1. 模型简介与环境准备 1.1 DeepSeek-R1-Distill-Qwen-1.5B模型特点 DeepSeek-R1-Distill-Qwen-1.5B是DeepSeek团队基于Qwen2.5-Math-1.5B基础模型,通过知识蒸馏技术融合R1架构优势打…...

如何通过手机号码实现精准地理位置查询:完整技术实现指南

如何通过手机号码实现精准地理位置查询:完整技术实现指南 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_m…...

029、图像到图像翻译:SDEdit与Paint by Example

调试一个老项目,遇到个头疼问题:用户上传的手绘草图,需要自动转成写实风格的产品图。试了传统GAN,效果要么太“塑料感”,要么细节全糊。同事扔来一句:“试试扩散模型呗,现在不都流行这个?” 翻了几篇论文,发现SDEdit和Paint by Example这两个路子挺有意思,今天把调试…...

3分钟上手!跨平台串口调试神器SerialPortAssistant终极指南

3分钟上手!跨平台串口调试神器SerialPortAssistant终极指南 【免费下载链接】SerialPortAssistant This project is a cross-platform serial port assistant. It can run on WINDOWS, linux、android、macos system. 项目地址: https://gitcode.com/gh_mirrors/…...

如何高效使用Java RPG Maker MV/MZ解密工具:专业级文件处理完全指南

如何高效使用Java RPG Maker MV/MZ解密工具:专业级文件处理完全指南 【免费下载链接】Java-RPG-Maker-MV-Decrypter You can decrypt whole RPG-Maker MV Directories with this Program, it also has a GUI. 项目地址: https://gitcode.com/gh_mirrors/ja/Java-R…...