让代码更简单

C#在CogRecordDisplay上绘制ROI区域

重要:本文最后更新于2019-12-23 08:31:51,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

此文是对康耐视VisionPro视觉程序C#接口的进一步认识和使用,建议阅读此文之前先阅读VisionPro+C#纯代码不使用VPP文件实例一文,另外关于ROI区域的介绍请看C#使用GDI在图像中绘制感兴趣区域ROI。本文大部分人是用不着的,只有特殊需求才需要。

阅读本文想必大家对CogPMAlignTool的调试方式还是有所了解的,鼠标拖拽的方式既方便又快捷,而鼠标拖拽改变的ROI区域就是文本实现的重点。

C#在CogRecordDisplay上绘制ROI区域

C#在CogRecordDisplay上绘制ROI区域

如上图所示,在CogRecordDisplay控件上,绘制一个ROI区域,并通过鼠标修改ROI区域的形状与大小,最后取得改变后的ROI区域数据。实现代码如下:

首先声明一个全局变量cra,方便我们后面取得数据。

复制
 CogRectangleAffine cra;

然后读入一张图像,并显示到控件中。

复制
 cogRecordDisplay1.Image = new CogImage8Grey(new Bitmap(opf.FileName));

实例化ROI区域对象。

复制
cra = new CogRectangleAffine();

设置区域大小、位置、形状。

复制
cra.SetCenterLengthsRotationSkew(50, 50, 100, 100, 0, 0);

允许用户交互调整

复制
cra.Interactive = true;
cra.GraphicDOFEnable = CogRectangleAffineDOFConstants.All;

加入到显示控件中


隐藏内容,解锁需要开通VIP
登录/注册

注册ROI区域变化事件

复制
 cra.Changed += crachange;

ROI区域变化事件处理函数

复制
private void crachange(Object sender, CogChangedEventArgs e)
{
label1.Text = cra.CenterX.ToString();
label2.Text = cra.CenterY.ToString();
label3.Text = cra.SideXLength.ToString();
label4.Text = cra.SideYLength.ToString();
label5.Text = cra.Rotation.ToString();
label6.Text = cra.Skew.ToString();
}

有了本文的方法,前面对于C#纯代码训练使用CogPMAlignTool一文中的不便即可解决。

感觉很棒!可以赞赏支持我哟~

6 打赏

评论 (6)

登录后评论
老师好,请问如果我要保存绘制好的ROI的话只能保存ROI的中心旋转等文本数据吗
是的
作者你好,为什么我是用上述提取区域做其他控件的选择区域会出现位移的现象,能帮忙解答一下吗?
可能是所选图像空间不同,具体还需测试。
使用CogFixtureNPointToNPointTool这个工具直接给ROI区域位置解决了,我想原因是像素图像坐标和程序图像坐标是有区别。
好复杂的C#
QQ咨询 邮件咨询 狗哥推荐