C#Halcon从零开发_Day9_弧形测量

一、引言

  • 场景:当需要检测圆弧边缘(如圆形物体的边缘、弧形缺陷等)时,gen_measure_arc可以生成一个测量对象,用于在圆弧区域内进行边缘测量。
  • 需求:如果图像中的目标边缘是圆弧形的,使用传统的直线测量方法可能无法准确捕捉边缘特征。此时,gen_measure_arc能够定义一个圆弧测量区域,提高边缘检测的精度。

二、具体实现


 read_image (Image2, 'C:/Users/10314/Desktop/arc1.jpg')
 rgb1_to_gray (Image2, Image)
 get_image_size (Image, Width, Height)
dev_get_window (WindowHandle)

draw_circle (WindowHandle, Row1, Column1, Radius)
gen_circle_contour_xld (ContCircle, Row1, Column1, Radius, rad(0), rad(360), 'positive', 1)
***获取相对于椭圆[本实例是圆形]水平轴135°的点
* phi:Angle 椭圆上点的角度(以弧度为单位),该角度对应于椭圆的主轴。角度从椭圆的主轴开始,逆时针方向测量。
** 限制:Angle >= 0 && Angle <= 6.283185307(即0到2π弧度之间)。
* Row: 椭圆中心点的行坐标
* Column: 椭圆中心点的列坐标
* Phi:椭圆主轴相对于水平轴的方向角度(以弧度为单位,ellipse.angle.rad)。该角度决定了椭圆在图像中的旋转方向。
* Radius1: 椭圆较大半轴的长度(ellipse.radius1)。较大半轴是椭圆长轴的一半。
* radius2:  椭圆较小半轴的长度(ellipse.radius2)。较小半轴是椭圆短轴的一半。
* RowPoint :输出:椭圆上指定角度点的行坐标。
* ColPoint :输出:椭圆上指定角度点的列坐标。
get_points_ellipse (rad(145), Row1, Column1, 0, Radius, Radius, RowPoint, ColPoint)
dev_set_color('green')
gen_cross_contour_xld (Cross, RowPoint, ColPoint, 18, rad(90))
* Row1:圆弧所在圆心行坐标
* Column1: 圆弧所在圆心列坐标
* rad(55)  圆弧的起始点和结束点之间的角度  注意!正数表示顺时针,这点与gen_measure_arc相反
* RowPoint 圆弧起始点行坐标
* ColPint: 圆弧起始点列坐标
disp_arc (WindowHandle, Row1, Column1, rad(55), RowPoint, ColPoint)

*测量句柄
*RowPoint 圆弧中心的行坐标
*ColPoint 圆弧中心的列坐标
*Radius:圆弧的半径
*rad(145) 圆弧的起始角度
*rad(-55) 圆弧的角度范围,相对于起始角度,以弧度为单位。如果小于0,则产生顺时针方向的弧
*10:环形弧的半径,即宽度的一半。这个参数决定了圆弧的宽度,也影响了边缘提取的精度。
*Width : 要处理的图像的宽度
*Height : 要处理的图像的高度
*'nearest_neighbor'插值方法,决定了在计算一维灰度值分布时使用的插值类型。常见的插值方法包括最近邻插值('nearest_neighbor')、双线性插值('bilinear')和双三次插值('bicubic')。
*MeasureHandle    测量对象句柄
gen_measure_arc (Row1, Column1, Radius, rad(145), rad(-55), 10, Width, Height, 'nearest_neighbor', MeasureHandle)

*测量
measure_pos (Image, MeasureHandle, 1, 10, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)
dev_set_color('blue')
for Index := 0 to |RowEdge|-1 by 1
     gen_cross_contour_xld(Cross, RowEdge[Index], ColumnEdge[Index], 8, 0)
endfor

最终效果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值