C#自学39一在picturebox控件上画ROI区域

C#之在PictureBox上绘制动态矩形框 C#之在PictureBox上绘制动态矩形框 多次做项目都用到了画ROI区域,简单来说就是在PictureBox上画矩形区域,特写此博文以方便日后查阅。 在PictureBox上画矩形主要利用了以下几个事件: 1、MouseDown事件 Point start; //起始点 Point end; //结束点 bool blnDraw; //在MouseMove事件中判断是否绘制矩形框 private void picture 阅读详情
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;

namespace Auto_Detection_System
{
    public partial class FormDrawROI : Form
    {
        public FormDrawROI()
        {
            InitializeComponent();
        }

        private System.Drawing.Point rectStartPoint, rectEndPoint;
        public bool b_CreateModel = false;
        bool b_DrawRoi;//判断Roi区域绘制
        Rect roiRect;

        //坐标转换  //解决拉伸问题
        private static void ConvertCoordinates(PictureBox pic, out int X0, out int Y0, int x, int y)
        {
            int pic_hgt = pic.ClientSize.Height;
            int pic_wid = pic.ClientSize.Width;
            int img_hgt = pic.Image.Height;
            int img_wid = pic.Image.Width;

            X0 = x;
            Y0 = y;
            switch (pic.SizeMode)
            {
                case PictureBoxSizeMode.AutoSize:
                case PictureBoxSizeMode.StretchImage:
                    X0 = (int)(img_wid * x / (float)pic_wid);
                    Y0 = (int)(img_hgt * y / (float)pic_hgt);
                    break;
            }
        }
        private void picBox_MouseDown(object sender, MouseEventArgs e)
        {
            if (true)
            {
                if (e.Button == MouseButtons.Left)
                {
                    rectStartPoint = e.Location; //获得鼠标按下的pictureBox上坐标
                    Invalidate();
                    b_DrawRoi = true;//判断标志
                }
                else if (e.Button == MouseButtons.Right)
                {
                    //roiImage = new Mat(srcImage, roiRect);
                    //templateImgContours = ImageTemplateContours(roiImage);

                    b_DrawRoi = false; //结束绘制
                    rectStartPoint = rectEndPoint;
                    pictureBox2.Refresh();//消掉画的框
                }
            }
        }

        private void picBox_MouseMove(object sender, MouseEventArgs e)
        {
            if (b_DrawRoi)
            {
                if (e.Button != MouseButtons.Left)//判断是否按下左键
                {
                    return;
                }

                rectEndPoint = e.Location; //记录框的位置和大小

                pictureBox2.Invalidate();

                // 最后点位置
                int X0, Y0;
                ConvertCoordinates(pictureBox2, out X0, out Y0, e.X, e.Y);

                //Create ROI 感兴趣区域
                ConvertCoordinates(pictureBox2, out X0, out Y0, rectStartPoint.X, rectStartPoint.Y);
                int X1, Y1;
                ConvertCoordinates(pictureBox2, out X1, out Y1, rectEndPoint.X, rectEndPoint.Y);

                roiRect = new Rect(Math.Min(X0, X1), Math.Min(Y0, Y1), Math.Abs(X0 - X1), Math.Abs(Y0 - Y1));
            }
        }

        private void picBox_Paint(object sender, PaintEventArgs e)
        {
            if (rectStartPoint.Equals(rectEndPoint)) return;
            e.Graphics.DrawRectangle(System.Drawing.Pens.Red, rectStartPoint.X, rectStartPoint.Y, rectEndPoint.X - rectStartPoint.X, rectEndPoint.Y - rectStartPoint.Y);
        }
    }
}

C#中ROI截取图像中模块区域图片 ① OpenCvsharp库。 阅读详情

相关推荐

HALCON联合C#检测表面缺陷——Halcon窗口画ROI

接上一节,这一节。我们讨论在HALCON窗口画ROI的初级版本,后期我们再优化,初级版本只是画ROI,ROI的并集差集等,后期我们再优化ROI和图片同步缩放移动等。 这里我要申明一下,所有的代码都是初级版本,比较容易理解的版本,在这个版本上我们可以扩展很多版本包括界面,这里只有一个主界面放了tabcontrol,我们也可以创建很多个FORM,分为主form,设置form等。针对于代码优化,因为有些代码会重复写很多遍,针对于这样的代码我们可以直接封装起来,这样调用就会很方便。 首先我们到设置界面,创建

奔跑的郑的博客 3115

c#在pictureBox控件上绘制多个矩形框及删除绘制的矩形框

  在pictureBox上每次只绘制一个矩形框,绘制下一个矩形框时上次绘制的矩形框取消,代码如链接:https://www.cnblogs.com/luxiao/p/5625196.html   在绘制矩形框时要在程序中添加鼠标相应的事件MouseDown、MouseUp、MouseMove、Paint。   绘制矩形框的代码如下: 1 Point start, end;//绘...

weixin_30299709的博客 2576

机器视觉-C#&C++ ROI交互控件以及图形显示

控件主要使用DispImgCtrDll.dll库,整个库支持各种ROI交互和图形显示。 画圆,画圆环,画线,画线段,画Mark,画多边形,画矩形,画旋转矩形,画文本

DHmouse的博客 2376

【C#绘制区域】C# pictruebox 划线绘制区域

C# 利用pictruebox 绘制区域

欢迎私信、留言交流 1955

C#Halcon图像ROI编辑工具控件

实现的功能: 1.手动选择打开的文件。 2.清空显示。 3.平移图像 4.放大图像 5.缩小图像 6.指针选择ROI 7.ROI-画线 8.ROI-画矩形 9.ROI-画任意角度矩形 10.ROI-画圆 11.ROI-画椭圆 12.删除选中ROI 13.删除所有ROI 14.刷新界面显示 15.以.hobj格式保存图像ROI 17.ROI选中后的右键菜单功能 1.设置ROI颜色,支持红绿蓝黄四种颜色。 2.设置ROI线样式。支持点样式和连续样式。 3.清空所有ROI

C# 图形绘制、可绘制Roil,绘制可调整Roi 7、可查看当前鼠标位置处的图像坐标和像素点RGB值

1、输入接口多,支持的输入类型有Bitmap(图像),byte[](图像数据), Intptr(图像数据的地址)等。 2、可直接在线程里执行图像显示,不需要使用委托。 3、可以对图像进行放大缩小平移。 4、可用预览图调节图像显示区域。 5、可轻松进行图形绘制。 6、可绘制Roil,绘制可调整Roi。 7、可查看当前鼠标位置处的图像坐标和像素点RGB值。

C# 在picturebox上 画roi区域

思路: 设变量bdraw ,按下时鼠标的相对坐标 ,rect为roi的矩形大小 鼠标按下时,bdraw=true ,鼠标移动时计算rect 鼠标抬起时 bdraw=false,然后再paint中画矩形就ok

u012719076的博客 3894

2.4 C#中显示控件BDPictureBox 的实现-ROI交互续2

2.4 C#中显示控件BDPictureBox 的实现----ROI交互续2

C#之在PictureBox控件上画点

C#之在PictureBox控件上画点 如何在PictureBox控件上实现鼠标每左击一次就会画一个点呢?这里总结了两种方法。 首先在窗体上插入PictureBox控件和一个Button按钮,当点击按钮后,鼠标进入PictureBox控件中,每左击一次画一个点。 第一种方法: 利用GDI+,代码如下: private string sType;//用来记录button的Name private void btnDrawPoint_Click(object sender, E

Kevin_Sun777的博客 6866

C#控件picturebox实现图像拖拽和缩放

主要为大家详细介绍了C#控件picturebox实现图像拖拽和缩放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

实战教程:用YOLOv11+PyQt5打造工地安全帽检测系统(附完整数据集)

本文提供了一份完整的实战指南,详细介绍了如何利用YOLOv11目标检测模型与PyQt5界面库,从零开始构建一个智能工地安全帽检测桌面应用。内容涵盖高质量数据集的准备与标注、YOLOv11模型训练与调优,以及如何使用PyQt5开发流畅、专业的图形用户界面,最终实现一个可实际部署的AI安全监控系统。

plum99的博客 738

自定义窗口交互控件:绘制多个ROI并修改

图像平移 缩放 ROI绘制 修改

weixin_42253874的博客 3400

双击文件夹弹窗“找不到应用程序”,但是右键点击打开可以

此电脑、回收站、c、d、f盘、控制面板、任意文件夹等都没有办法双击打开。 右键中包含“使用filemanager打开”,是由于FileManager卸载残留导致的。 懒人专用附件 下载解压上面附件,双击导入可以清理FileManager软件残留 参考: 双击此电脑出现找不到应用程序,但是右键点击可以-其他-优快云问答https://ask.youkuaiyun.com/questions/7631439 电脑上的文件夹双击都提示找不到应用程序,但是右击打开就能打开,该怎么解决? - 知乎 (z

webmasterqpwou的博客 1万+

C#上位机项目实战——exe项目调试更改dll中源代码

我们有时候自己封装了一个C#的dll,然后引用了这个dll里面的方法,当我们发现这个方法有问题的时候,可以通过一些手段进入到这个dll的方法中进行单步调试,从而找到错误的原因,本文使用的是Visual Studio2019

qq_34059233的博客 125

libero烧录信号抓取

提示:如果改了东西需要重新烧录,需要把这两个界面都关闭再libero打开。两个红色的要关闭掉。然后返回libero开始烧录,观测信号(如果只烧录观测从这一步开始就行)等到下面的messige出现以下信息表示run好了。在下图中右侧可以自己设置,设置完之后记得保存一下。run一下,耐心等待,有警告就ok,run完之后。run成功会变绿色,然后点下面的这个看波形。设置抓取信号:在libero打开。打开的就是烧录界面,直接run。

qq_34047965的博客 1421

Bellhop水声信道模型的仿真

Bellhop是一种基于射线追踪的水声信道模型,广泛用于预测水下环境中的声压场。它通过模拟声波在水中的传播路径,计算声场分布,适用于复杂的水下通信场景。

yt94832的博客 1313

C#上位机项目实战——上位机与汇川H5U系列PLC通信

汇川PLC在工业自动化领域的使用率越来越高,所以从事上位机掌握与汇川PLC的通信成为了必须要掌握的技能,本文讲解如何在没有真实PLC的情况下搭建仿真测试环境,以及如何使用马工开发的专用与PLC通信的MgCommunication通信库实现数据读写

qq_34059233的博客 180

PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发

在嵌入式系统与服务器电源设计中,数字电源管理总线是实现高效、可靠电源监控与控制的关键技术。PMBus协议基于广泛应用的I2C总线物理层,通过定义标准化的命令集、数据格式与时序规范,为多路电源的电压电流监控、动态调整及故障处理提供了高效解决方案。其技术价值在于通过硬件自动处理协议解析、时钟拉伸与中断,显著降低软件复杂度,使开发者能聚焦于电源环路设计等核心逻辑。该协议广泛应用于服务器、通信基站及高性能计算板卡等场景,通过引入数据包错误检查、专用告警线等机制,确保了电源管理的可靠性。本文以TI TMS320F28

weixin_29189377的博客 374

c#-OpenCvSharp-roi区域(截取和掩码)附源码

仅在鼠标移动事件中加入掩码操作,感觉代码还有优化的地方,后面会回头继续优化。各位读者有对代码进行优化的话可以联系我,一起交流学习,作为初学者,我还要很多需要学习的地方。根据前两篇博客roi截图和掩码操作进行总结优化,涉及到的知识点讲解都在两篇文章中,这里不多加赘述,该文章仅作为总结。

m0_55074196的博客 2937

Aider的Repo Map功能

要把整个项目的所有文件添加到 Repo Map 中,需要调整 Aider 的行为,让它扫描整个代码库并将所有文件纳入 Repo Map。在使用 Aider 时,Repo Map 默认只包含当前会话中明确指定的文件(通过命令行传入的。通过命令行将整个项目的文件列表传递给 Aider,使其初始化时包含所有文件。,让 Aider 在初始化时自动加载整个项目的文件到。如果你的项目是 Git 仓库,Aider 可以通过。在 Aider 的交互模式中,手动添加整个项目文件。,从而生成包含所有文件的 Repo Map。

qq_41638872的博客 1638

利用恒源云在云端租用GPU服务器训练YOLOv8模型(包括Linux系统命令讲解)

为当涉及到深度学习的训练任务时,GPU的计算能力是不可或缺的。相对于传统的中央处理器(CPU),图形处理器(GPU)具有更强大的并行计算能力,能够显著加速深度学习模型的训练过程。深度学习算法通常涉及大量的矩阵运算和张量操作,而GPU的并行计算架构使得它们能够高效地执行这些计算,从而加速模型训练的速度。恒源云是一个经济高效的云计算平台,您可以通过恒源云的控制台或者命令行界面来管理实例、上传和下载数据、执行训练任务等。

Snu77的博客 6722

C# 实现图片上下页切换,绘制ROI区域

【代码】C# 实现图片上下页切换,绘制ROI区域。

qq_62238325的博客 623

人工智能训练师三级补贴3120元申领全攻略|条件+流程+五省市对比

补贴是真的,但不是"白给"的。你需要满足社保、户籍、时间等条件,严格按照流程操作。记住四件事先确认自己是否满足条件,再报名——别考完了才发现领不到紧缺工种补贴更高——确认你所在城市是否在紧缺目录中证书下发后12个月内申请——设个日历提醒材料准备齐全再提交——避免来回折腾如果你正在考虑考人工智能训练师三级证书,想要从报名到备考到拿证到申领补贴的完整一站式指南,欢迎查看我的付费专栏:📖《人工智能训练师三级·从零到拿证完全指南》80篇系统化内容,覆盖报名、备考、冲刺、拿证全流程。

白话机器学习 1522

C#中如何调整图像大小

1.首先要获取你想要调整大小的图像: string path = Server.MapPath(“~/Images”); System.Drawing.Image img = System.Drawing.Image.FromFile(string.Concat(path,”/3904.jpg”)); 2.将图像转换为Bitmap: Bitmap b = new Bitmap(img); ...

纸言片语 2774

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C#使用SnsPictureBox.dll绘制矩形和可调节矩形

C#使用SnsPictureBox.dll绘制可调节矩形。支持响应式和等待式,支持不可调节矩形和可调节矩形。

C# 730

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: C#自学38一C# 之 Dictionary实现textbox数据保存,读取
下一篇: C#自学40一C#调用Halcon无法加载+DLL找不到指定的模块
Expect for future
博客等级 码龄6年 369粉丝 112原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值