程序做到准确获得画得的原形区域的坐标和半径。
步骤:1、运行
2、在感兴趣的区域画两个圆框,圆框与要测圆应大致(尽量)重合。
3、输出。
哈哈,直接上代码:
(去个前奏,去个尾巴没多少东西,自己看吧)
dev_update_off ()
read_image (Image,'C:/Users/连山人/Desktop/标定板图片/Im1.bmp')
dev_close_window ()
get_image_size (Image,Width, Height)
dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_color ('lime green')
dev_set_line_width (3)
dev_display (Image)
*------------------步骤2:画矩形得直线1----------------------
*创建计量模型需要的数据结构:MetroLineModel;创建的用于测量的数据结构
create_metrology_model (MetroLineModel1)
* 设置计量对象的图像大小(不是必须的,但可以提高第一次测量的运行时间)
set_metrology_model_image_size (MetroLineModel1, Width, Height)
**------------------步骤1:----------------------
draw_circle(WindowHandle,RowC1, ColumnC1, Radius1)
draw_circle(WindowHandle,RowC2, ColumnC2, Radius2)
* 添加几个完整的圆圈
CircleParam := [RowC1, ColumnC1, Radius1]
CircleParam := [CircleParam,RowC2, ColumnC2, Radius2]
add_metrology_object_generic (MetroLineModel1, 'circle', CircleParam, 10, 5, 1, 30, [], [], CircleIndices1)
apply_metrology_model (Image, MetroLineModel1)
* 得到一个可视化的测量几何形式
get_metrology_object_result_contour (ContoursfitCir, MetroLineModel1, 'all', 'all', 1.5)
* 提取小圆的半径
get_metrology_object_result (MetroLineModel1, CircleIndices1, 'all', 'result_type', 'all_param', paramAll)
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle)
disp_obj (Image, WindowHandle)
dev_display (ContoursfitCir)
Message0 := '圆1坐标'+'('+paramAll[0]+ ','+paramAll[1]+')'
Message1 := '圆1半径'+paramAll[2]
Message2 := '21坐标'+'('+paramAll[3]+ ','+paramAll[4]+')'
Message3 := '圆2半径'+paramAll[5]
disp_message (WindowHandle, Message0+'\n'+Message1+'\n'+Message2+'\n'+Message3, 'window', -1, -1, 'red', 'true')
stop()
所用的图像与结果