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

C#自定义控件结合OpencvSharp实现斑点检测

C# 自定义控件 opencvsharp 斑点检测blob最近在做一个图像处理相关的项目需要实时检测图片中的斑点同时要求能够方便地在WinForms界面中展示和操作。经过一番调研和实践决定采用C#自定义控件结合OpencvSharp来实现。这组合不仅充分发挥了C#在Windows应用开发中的优势还借助OpencvSharp强大的图像处理功能完美地完成了斑点检测任务。一、项目背景在医疗影像分析、工业检测等领域斑点检测是一个常见的需求。传统的做法通常是通过Python结合OpenCV来实现但这次项目需要一个Windows桌面应用程序因此选择C#作为开发语言。二、OpencvSharp简介OpencvSharp是OpenCV在.NET平台上的封装它允许开发者在C#中使用OpenCV的图像处理功能。相比直接使用OpenCV的C接口OpencvSharp更加简洁易用同时保留了OpenCV的核心功能。using OpencvSharp; // 创建一个窗口用于显示图像 var window new Window(Image Window); window.Show(); // 读取图像 Mat image Cv2.ImRead(input.jpg); // 转换为灰度图像 Mat grayImage new Mat(); Cv2.CvtColor(image, grayImage, ColorConversion.BgrToGray); // 显示图像 Cv2.ImShow(Gray Image, grayImage); Cv2.WaitKey(0);三、自定义控件实现为了更好地展示和操作图像我决定创建一个自定义的Windows Forms控件。这个控件需要支持图像的显示、缩放和拖动功能。public class ImageViewer : UserControl { private Mat currentImage; private Rectangle imageRectangle Rectangle.Empty; private Point mouseDownPoint Point.Empty; public ImageViewer() { InitializeComponent(); this.SetStyle(ControlStyles.ResizeRedraw, true); this.SetStyle(ControlStyles.UserPaint, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); } public void DisplayImage(Mat image) { currentImage image; this.Invalidate(); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); if (currentImage null) return; if (imageRectangle Rectangle.Empty) { // 计算图像显示区域 float aspectRatio (float)currentImage.Width / currentImage.Height; int width this.Width; int height (int)(width / aspectRatio); if (height this.Height) { height this.Height; width (int)(height * aspectRatio); } imageRectangle new Rectangle( (this.Width - width) / 2, (this.Height - height) / 2, width, height ); } // 将OpenCV的Mat转换为Bitmap var bitmap currentImage.ToBitmap(); e.Graphics.DrawImage(bitmap, imageRectangle); } // 其他事件处理代码... }四、斑点检测实现斑点检测的核心算法采用Blob检测。BlobBinary Large Object检测是一种基于图像区域分析的检测方法特别适合检测图像中的斑点、细胞等目标。public class SpotDetector { private double threshold; private double minArea; private double maxArea; public SpotDetector(double threshold, double minArea, double maxArea) { this.threshold threshold; this.minArea minArea; this.maxArea maxArea; } public ListRect Detect(Mat image) { var spots new ListRect(); // 转换为二值图像 Mat binaryImage new Mat(); Cv2.Threshold(image, binaryImage, threshold, 255, ThresholdType_BINARY); // 查找轮廓 Mat hierarchy new Mat(); var contours Cv2.FindContours(binaryImage, RetrievalMode.List, ChainApproxMethod.Simple); foreach (var contour in contours) { var area Cv2.ContourArea(contour); if (area minArea || area maxArea) continue; var rect Cv2.BoundingRect(contour); spots.Add(rect); } return spots; } }五、效果展示将自定义控件和斑点检测算法整合到Windows Forms应用中可以实时显示原始图像和检测结果。用户可以通过调整阈值、最小面积和最大面积等参数实现对斑点检测的精细控制。private void buttonDetect_Click(object sender, EventArgs e) { Mat image Cv2.ImRead(input.jpg); Mat grayImage new Mat(); Cv2.CvtColor(image, grayImage, ColorConversion.BgrToGray); var detector new SpotDetector( threshold: trackBarThreshold.Value, minArea: numericUpDownMinArea.Value, maxArea: numericUpDownMaxArea.Value ); var spots detector.Detect(grayImage); // 在原始图像上绘制检测结果 foreach (var spot in spots) { Cv2.Rectangle(image, spot, Scalar.Red, 2); } imageViewer.DisplayImage(image); }六、总结通过C#自定义控件和OpencvSharp的结合我们成功地实现了一个功能强大且易于操作的斑点检测应用。自定义控件提供了良好的用户界面支持而OpencvSharp则为图像处理提供了丰富的功能。这种组合不仅充分发挥了C#在Windows应用开发中的优势还借助了OpenCV强大的图像处理能力是一种非常值得推荐的开发方案。C# 自定义控件 opencvsharp 斑点检测blob

相关文章:

C#自定义控件结合OpencvSharp实现斑点检测

C# 自定义控件 opencvsharp 斑点检测blob最近在做一个图像处理相关的项目,需要实时检测图片中的斑点,同时要求能够方便地在WinForms界面中展示和操作。经过一番调研和实践,决定采用C#自定义控件结合OpencvSharp来实现。这组合不仅充分发挥…...

AUKF电池SOC估计多种工况实验验证 基于自适应无迹卡尔曼滤波的电池电量估计MATLAB程序

AUKF电池SOC估计多种工况实验验证 基于自适应无迹卡尔曼滤波的电池电量估计MATLAB程序,基于AUKF的SOC估计,注释详细。 采用二阶RC模型,基于误差窗口统计的自适应调节方法(后面有文献截图)。 使用三项实验数据对AUKF进行…...

C#编程实现自定义控件与OpenCVsharp的图像处理技术,快速精确地找出圆的位置

C# 自定义控件 opencvsharp 找圆最近在做个工业视觉检测项目时,发现WinForm自带的PictureBox控件完全不够用。客户要求实时显示摄像头画面还要标出圆形瑕疵,这逼得我不得不撸起袖子造轮子——用C#自定义控件整合OpenCvSharp实现找圆功能。先搞个基础画…...

Maven 从零到精通实战专栏导读 - 24 篇系统教程助你成为团队核心

🚀 Maven 从零到精通实战专栏导读 - 24 篇系统教程助你成为团队核心 💡 摘要: 本文详细介绍全网最系统的 Maven 实战专栏,共 24 篇精品文章、25,000 行干货。从基础优化到企业级应用,从性能提升 60% 到 CI/CD 流水线搭建&#xff…...

0620-输液控制(固定阀值)-系统设计(51+1602+AD0832+U2003+KEY4)

功能描述 1、采用51单片机作为主控芯片; 2、采用光电传感器检测点滴滴速; 3、通过电机调整吊瓶高度以控制滴速; 4、当液位小于3cm时进行报警; 5、采用1602显示当前滴速、设置滴速、液位; 电路设计 采用Altium Desig…...

COMSOL 模型:局部共振压电超材料如何调谐水下低频吸声

COMSOL模型局部共振压电超材料调谐水下低频吸声在水下声学领域,低频噪声的控制一直是个重要的课题。局部共振压电超材料为水下低频吸声提供了一种新颖且极具潜力的解决方案。借助 COMSOL 强大的多物理场仿真能力,我们能够深入探究这一材料的吸声机制&…...

探索Comsol中高温金属熔化分解两相流模型

Comsol两相流模型,高温下的金属(固体)熔化分解过程,考虑汽化和液化,水平集,相变模型在材料科学与热物理领域,研究高温下金属的熔化分解过程至关重要。借助Comsol这一强大的多物理场仿真软件&…...

Python批量转换Word到PDF,新手直接复制运行【实测可用】

日常工作中,经常需要将多个Word文件批量转换为PDF(比如归档、汇报、传输),手动逐个“另存为”不仅耗时,还容易遗漏、出错。今天分享一段实测可用的Python代码,基于windows调用Word原生程序转换,…...

计算机毕业设计源码:python二手房数据挖掘与可视化系统 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

1、项目介绍 技术栈 Django框架、Echarts可视化工具、requests爬虫框架、HTML前端技术、Bootstrap响应式布局,用于全国二手房数据的采集清洗与多维度可视化分析,房源数据量达175万套。 功能模块系统首页数据总览数据可视化分析1(城市房…...

解决银河麒麟无SRS安装包的痛点:自己动手丰衣足食,rpm打包指南

大家好,最近在搞国产化适配,项目在银河麒麟高级服务器系统上,需要部署 SRS 做流媒体分发。 本来想着 yum install -y srs 一把梭,结果你懂的,官方源里压根没有,网上倒是有几个 SRPM 包,但版本老…...

计算机毕业设计源码:python房产大数据可视化分析平台 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...

计算机毕业设计源码:python二手房市场数据可视化系统 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

计算机毕业设计源码:python链家二手房数据采集分析平台 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

【2026年滴滴春招- 3月15日 -第二题- 开心食堂】(题目+思路+JavaC++Python解析+在线测试)

题目内容 你开了一家食堂。新的一天的营业从第 000 时刻开始,这一天食堂将迎来 nnn 个顾客,其中第 iii</...

搭建调度中心->XXL_JOB

XXL-JOB 是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 1.克隆代码 使用 IDEA &#xff0c;从码云 https://gitee.com/xuxueli0323/xxl-job 克隆源码。从码云克隆的原因是&#xff0c;速度比较快。 克隆完成后&#xff0…...

【2026年拼多多春招- 3月15日 -第三题- 多多的配送轨迹】(题目+思路+JavaC++Python解析+在线测试)

题目内容 多多正在检查一段配送轨迹日志。日志长度为nnn,从起点(0,0)(0,0)(0,0)出发,按顺序记录了每一步移动指令。日志是一个长度为...

功率分流混联式混合动力车辆热管理建模与性能计算分析,对标丰田混合动力EVT构型,利用Simul...

功率分流混联式混合动力车辆热管理建模与性能计算分析&#xff0c;对标丰田混合动力EVT构型&#xff0c;利用Simulink建模&#xff0c;采用成熟软件架构&#xff0c;考虑驾驶乘员舱产热与空调调节系统&#xff0c;发动机产热建模与热管理系统&#xff0c;电动产热模型&#xff…...

机器视觉学习总结

一、视觉行业引入机器视觉是传感器技术的一个重要分支&#xff0c;其核心在于利用机器系统替代人眼和大脑进行测量与判断&#xff0c;实现非接触式的自动化检测。从技术本质上讲&#xff0c;机器视觉通过光 学装置和非接触传感器接收和处理真实物体的图像&#xff0c;从而获取所…...

SWD/JTAG Communication Failure的解决方法

以下是我的设备及环境。环境配置&#xff1a;1.keil已下载安装2.芯片pack包已导入3.下载安装NsLink调试器已完成4.CMSIS-DAP驱动已装好有几种解决方法&#xff1a;1.debug设置是否正确&#xff0c;我需要通过Debug USB进行烧录&#xff0c;所以debug设置选择CMSIS-DAP-NSLink&a…...

从实验室到生产线:YOLOv11多任务统一框架(检测+分割+姿态估计)行业应用

前言 “产线上需要同时检测零件缺陷、分割裂纹区域、还要估算机械臂抓取姿态,结果部署了三套不同的模型(YOLOv8, Mask R-CNN, HRNet),显存爆满,延迟叠加,系统根本跑不动?” “算法团队在实验室刷榜mAP很开心,但工程团队面对三个模型的同步、对齐、后处理冲突,头发都掉…...

YOLO26实战全流程:从数据集标注到端到端无NMS推理(附ProgLoss调参技巧)

前言 “训练YOLO模型,调参调到头秃,mAP还是卡在瓶颈上不去?” “部署时NMS后处理耗时占比30%,边缘设备上根本跑不满帧率?” “小目标检测一直是弱项,无论怎么调整Anchor或增加层数,漏检率依然居高不下?” 2026年1月,Ultralytics正式发布了YOLO26,这不仅仅是一次版本号…...

YOLOv8.3.133工业级实战:OpenVINO导出优化+Intel CPU推理,帧率突破120FPS

前言 “工厂产线只有Intel CPU工控机,没有独立显卡,跑YOLOv8只有15 FPS,根本跟不上流水线速度?” “想部署到边缘端,但NVIDIA Jetson成本太高,希望利用现有的Intel Core i7/i9或Xeon服务器资源?” “导出ONNX后推理还是慢,量化精度损失太大,业务方无法接受漏检?” 在…...

Vllm快速入门

背景 vLLM 是一个用于 LLM 推理和服务的快速易用的库。 vLLM 最初是在加州大学伯克利分校的 Sky Computing Lab 开发的&#xff0c;现已发展成为一个社区驱动的项目&#xff0c;融合了学术界和工业界的贡献。 核心细节参考官网&#xff1a;https://docs.vllm.com.cn/en/late…...

Aurogen:告别命令行,纯 Web 可视化快速上手 Claw 养殖,零基础也能轻松配置 Claw

一、前言 前段时间我开始沉迷于 OpenClaw 养殖。随着装上的 Skills 越来越多&#xff0c;问题也慢慢暴露出来了&#xff1a;当短期记忆、海量 Skills 和各种系统指令被一起塞进 System Prompt 后&#xff0c;上下文长度迅速膨胀&#xff0c;结果就是 回复速度明显变慢逻辑偶尔…...

【京东云云服务器部署Openclaw】简单、傻瓜三步部署成功流程

【京东云服务器部署Openclaw】简单、傻瓜三步部署成功流程 前言 最近发现京东云有个超值活动——9块9就能买一个月的轻量云服务器&#xff0c;正好可以用来部署最近很火的OpenClaw AI助手。本文将详细记录从购买服务器到成功运行OpenClaw的完整过程&#xff0c;希望对大家有所帮…...

Linux系统密码破解

环境准备&#xff1a; 虚拟机&#xff1a;VMware Workstation 17&#xff0c;系统&#xff1a;Red Hat&#xff0c;配置&#xff1a;16GB内存/8核处理器。通过登录界面修改root密码&#xff08;已知旧密码&#xff09;&#xff1a; 1. 在登录界面点击“未列出”或“其他” 2. 输…...

k8s问答题----初始化版

1.ca-certificates, gnupg, lsb-release 三个包的解释。答&#xff1a;ca-certificates 软件包提供常用的 SSL 证书&#xff0c;用于在 Linux 系统中进行安全的网络通信。 gnupg 软件包提供一系列用于保护数据安全的加密和解密的工具。 lsb-release 软件包包含了 Linux 发行版相…...

计科-软工13-计算实例「整理」

修改一个已有的库存清单系统&#xff0c;估计需要8000元&#xff0c;系统修改后使用5年。每年可节省3000元。请进行成本/效益分析&#xff0c;并计算投资回收期和纯收入&#xff08;利率按12%计算&#xff09;。假设某软件的生产性工作量是150人月&#xff0c;复杂程度指数是18…...

GTE中文-large惊艳效果展示:事件抽取+关系识别双任务高精度输出案例

GTE中文-large惊艳效果展示&#xff1a;事件抽取关系识别双任务高精度输出案例 安全声明&#xff1a;本文仅展示技术效果与应用案例&#xff0c;所有示例内容均为技术演示用途&#xff0c;不涉及任何真实数据或敏感信息。 1. 多任务NLP模型的强大能力 GTE文本向量-中文-通用领…...

鸿蒙智能WiFi开关硬件与分布式控制实现

1. 项目概述鸿蒙智能WiFi开关是一套面向家庭与宿舍场景的嵌入式物联网终端设备&#xff0c;其核心功能是通过Wi-Fi网络实现对交流负载&#xff08;如照明灯具、风扇、插座类电器&#xff09;的远程通断控制&#xff0c;并支持本地物理按键操作与状态指示。该设备并非通用型智能…...