此例程是测量弧形
读取图片:
*读取图片
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 ()