C#Halcon从零开发_Day4_绘制ROI区域及区域操作

一、绘制区域

*拿到窗口句柄
dev_get_window (WindowHandle)
绘制有角度的矩形  out:phi->(长半轴)的朝向(角度),单位为弧度。
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
生成有角度的矩形
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
绘制没有角度的矩形
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle1, Row1, Column1, Row2, Column2)
绘制圆
draw_circle (WindowHandle, Row3, Column3, Radius)
gen_circle (Circle, Row3, Column3, Radius)
绘制椭圆  phi1->长半轴的朝向(角度),单位为弧度 radius1->长半轴  radius2->短半轴
draw_ellipse (WindowHandle, Row4, Column4, Phi1, Radius1, Radius2)
gen_ellipse (Ellipse, Row4, Column4, Phi1, Radius1, Radius2)
绘制直线
draw_line (WindowHandle, Row11, Column11, Row21, Column21)
gen_region_line (RegionLines, Row11, Column11, Row21, Column21)
绘制任意区域
draw_region (Region, WindowHandle)

二、区域的形态学操作

腐蚀
erosion_circle (Region, RegionErosion, 3.5)
erosion_rectangle1 (RegionErosion, RegionErosion1, 11, 11)

膨胀
dilation_circle (RegionErosion1, RegionDilation, 3.5)
dilation_rectangle1 (RegionDilation, RegionDilation1, 11, 11)

开运算(非常重要):

改善区域质量(填充孔洞、平滑边界),而不是简单地扩展区域,同时尽量保持目标物体的整体形状和位置。

闭运算(非常重要):

消除图像中细小的、孤立的噪声点或前景像素,同时在一定程度上保持物体的整体形状和位置

三、区域之间的交集、并集、差集、补集等


*清空窗口
dev_clear_window ()
*绘制任意区域1、2
draw_region (Region1, WindowHandle)
draw_region (Region2, WindowHandle)
交集
intersection (Region1, Region2, RegionIntersection)
差集 区域1 减去 区域1与区域2的交集
difference (Region1, Region2, RegionDifference)
并集  区域1与区域2一同占据的所有区域
union2 (Region1, Region2, RegionUnion)
补集 区域取反,除了区域1以外的区域
complement (Region1, RegionComplement)

四、区域形状的变换

根据区域所在位置、角度、大小直接转变改区域的形状
shape_trans (Region1, RegionTrans, 'convex')
shape_trans (Region1, RegionTrans1, 'rectangle1')
shape_trans (Region1, RegionTrans2, 'rectangle2')
shape_trans (Region1, RegionTrans3, 'inner_circle')
shape_trans (Region1, RegionTrans4, 'outer_circle')

五、移动区域


move_region (Region1, RegionMoved, 50, 100)

六、仿射变换,移动和旋转区域(推荐)


移动区域
*生成移动变换矩阵
*Row1, Column1, Angle1, Row2, Column2, Angle2   相当于Column方向位移-100 (对应窗口往左位移100像素)
vector_angle_to_rigid(0,0,0,0,-100,0,HomMat2D)
affine_trans_region (Region1, RegionAffineTrans, HomMat2D,'false')
*Row方向移动100 (对应窗口往下位移100像素)
vector_angle_to_rigid (0,0,0,100,0,0, HomMat2D1)
affine_trans_region (Region1, RegionAffineTrans1, HomMat2D1, 'false')

角度变换
*获取旋转中心
area_center (Region1, Area, Row5, Column5)
*生成对应旋转变换矩阵
vector_angle_to_rigid (Row5, Column5,0,Row5, Column5,rad(90), HomMat2D2)
*使用变换矩阵旋转
affine_trans_region (Region1, RegionAffineTrans2, HomMat2D2, 'nearest_neighbor')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值