基于Halcon学习的测量拟合【四】measure_arc.hdev例程

此例程是测量弧形

 读取图片:

*读取图片
read_image (Zeiss1, 'zeiss1')
*得到图片的宽高
get_image_size (Zeiss1, Width, Height)

*关闭窗口
dev_close_window ()
*打开一个新的窗口
dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle)
*设置显示的字体
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')

*显示图片
dev_display (Zeiss1)
*显示提示信息
disp_continue_message (WindowHandle, 'black', 'true')
stop ()

生成测量圆弧: 

*定义一些参数
* 弧线圆心
Row := 275
Column := 335
* 弧线半径
Radius := 107

* 弧线起始角度和终点角度
AngleStart := -rad(55)
AngleExtent := rad(170)
dev_set_draw ('fill')
dev_set_color ('green')
dev_set_line_width (1)

*计算与特定角度对应的椭圆点。
get_points_ellipse (AngleStart + AngleExtent, Row, Column, 0, Radius, Radius, RowPoint, ColPoint)
*显示圆弧
disp_arc (WindowHandle, Row, Column, AngleExtent, RowPoint, ColPoint)

dev_set_line_width (3)
*生成测量圆弧
gen_measure_arc (Row, Column, Radius, AngleStart, AngleExtent, 10, Width, Height, 'nearest_neighbor', MeasureHandle)

*显示提示信息
disp_continue_message (WindowHandle, 'black', 'true')
stop ()

 开始测量拟合:

*计数
count_seconds (Seconds1)
n := 10
for i := 1 to n by 1
    *开始测量边缘间的距离
    * 提取垂直于矩形或环形弧的直边
    * Image (input_object)  输入图像
    * MeasureHandle (input_control)  测量对象句柄
    * Sigma (input_control)  高斯平滑系数
    * Threshold (input_control)  最小边缘幅度
    * Transition (input_control) 检测所有正负边缘
    * Select (input_control)  选中所有边缘
    * RowEdge (output_control)  边缘中心行坐标
    * ColumnEdge (output_control)  边缘中心列坐标
    * Amplitude (output_control)  边缘的边缘幅度大小(带符号)
    * Distance (output_control)  相邻边缘之间的距离
    measure_pos (Zeiss1, MeasureHandle, 1, 10, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)

endfor
count_seconds (Seconds2)
Time := (Seconds2 - Seconds1) / n

*显示提示信息
disp_continue_message (WindowHandle, 'black', 'true')
* stop ()

*计算两点间直线的距离
distance_pp (RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2], IntermedDist)
dev_set_color ('red')

*画出直线
disp_line (WindowHandle, RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2])
dev_set_color ('yellow')

*显示提示信息
disp_message (WindowHandle, 'Distance: ' + IntermedDist, 'image', 250, 80, 'yellow', 'false')

*清除句柄
close_measure (MeasureHandle)
dev_set_line_width (1)
stop ()
dev_clear_window ()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值