read_image (Image, ‘C:/Users/Public/Documents/MVTec/HALCON-18.11-Progress/examples/images/printer_chip/printer_chip_01.png’)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
get_image_size (Image, Width, Height)
dev_display (Image)
*画一条线
draw_line (WindowHandle, Row1, Column1, Row2, Column2)
*创建测量模型句柄
create_metrology_model (MetrologyHandle)
* 添加直线测量对象到模型
* add_metrology_object_line_measure()
* MetrologyHandle:测量模型句柄
* RowBegin:测量区域行坐标起点
* ColumnBegin:测量区域列坐标起点
* RowEnd:测量区域行坐标终点
* ColumnEnd:测量区域列坐标终点
* MeasureLength1:垂直于边界的测量区域的一半长度
* MeasureLength2:相切于边界的测量区域的一半长度
* MeasureSigma:用于平滑的高斯函数的 Sigma
* MeasureThreshold:最小边缘幅度阈值
* GenParamName:通用参数的名称
* GenParamValue:通用参数值
* Index:所创建的计量对象的索引
add_metrology_object_line_measure (MetrologyHandle, Row1, Column1, Row2, Column2, 20, 5, 1, 30, [], [], Index)
*’num_instances’:拟合,成功拟合实例的最大数量
set_metrology_object_param (MetrologyHandle, ‘all’, ‘num_instances’, 1)
*’measure_select’:测量,边缘端点的选择(‘last’、’first’)
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_select’, ‘all’)
*’measure_threshold’:测量,最小边缘幅度阈值
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_threshold’, 30)
*’measure_sigma’:测量,用于平滑的高斯函数的 Sigma
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_sigma’, 1)
*’measure_length1’:区域,垂直于边界的测量区域的一半长度
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_length1’, 30)
*’measure_length2’:区域,相切于边界的测量区域的一半长度
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_length2’, 1)
*’num_measures’:区域,测量区域数(小卡尺个数)
set_metrology_object_param (MetrologyHandle, ‘all’, ‘num_measures’, 10)
*’min_score’:拟合,最小分数
set_metrology_object_param (MetrologyHandle, ‘all’, ‘min_score’, 0.4)
* 执行
*apply_metrology_model()
*Image:输入的测量图像
*MetrologyHandle:测量模型句柄
apply_metrology_model (Image, MetrologyHandle)
*获取计量模型的计量对象的测量区域和边缘位置结果
*get_metrology_object_measures()
*Contours:测量区域的矩形 XLD 轮廓
*MetrologyHandle:测量模型句柄
*Index:指定计量对象,为all时所有计量对象的参数都被设置(’all’)
*Transition:选择亮/暗或暗/亮边缘(‘all’、’negative’、 ‘positive’)
*Row:测量边缘的行坐标集
*Column:测量边缘的列坐标集
get_metrology_object_measures (Contours, MetrologyHandle, ‘all’, ‘all’, Row, Column)
* 获取计量模型的计量对象的结果
*get_metrology_object_result()
*Contour:给定计量对象的结果轮廓
*MetrologyHandle:测量模型句柄
*Index:指定计量对象,为all时所有计量对象的参数都被设置(’all’)
*GenParamName:通常设置为’result_type’,表示用GenParamValue返回方式和结果
*GenParamValue:通常设置为’all_param’,表示将所有测量参数到Parameter
*Parameter:返回的参数值
*对于直线:返回 [‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]
*对于圆型:返回[‘row’,‘column’,‘radius’]或 [‘x’,‘y’,‘radius’]
*对于椭圆:返回[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]
*对于矩形:返回[‘row’,‘column’,‘phi’,‘length1’,‘length2’]
get_metrology_object_result (MetrologyHandle, 0, ‘all’, ‘result_type’, ‘all_param’, Parameter)
* 获取计量模型的计量对象的结果轮廓
*get_metrology_object_result_contour()
*Contour:给定计量对象的结果轮廓。
*MetrologyHandle:测量模型句柄
*Index:指定计量对象,为all时所有计量对象的参数都被设置(’all’)
*Instance:计量对象的实例(’all’)
*Resolution:相邻轮廓点之间的距离
get_metrology_object_result_contour (Contour, MetrologyHandle, 0, ‘all’, 1.5)
*释放测量模型句柄
clear_metrology_model (MetrologyHandle)
clear_window (WindowHandle)
dev_display (Image)
dev_set_color (‘red’)
dev_display (Contour)
dev_set_color (‘green’)
gen_cross_contour_xld (Cross, Row, Column, 16, 0.785398)
*参数设置列表(set_metrology_object_param )
* ‘measure_length1’:区域,垂直于边界的测量区域的一半长度
* ‘measure_length2’:区域,相切于边界的测量区域的一半长度
* ‘measure_distance’:区域,两个测量区域中心之间的距离
* ‘num_measures’:区域,测量区域数
* ‘measure_sigma’:测量,用于平滑的高斯函数的 Sigma
* ‘measure_threshold’:测量,最小边缘幅度阈值
* ‘measure_select’:测量,边缘端点的选择(‘last’、’first’)
* ‘measure_transition’:测量,方向(‘all’、’negative’、 ‘positive’)
* ‘measure_interpolation’:测量,插值类型
* ‘min_score’:拟合,最小分数
* ‘num_instances’:拟合,成功拟合实例的最大数量
* ‘distance_threshold’:拟合,距离阈值
结果:
本帖 复制 可以直接运行,红色字体为注解。
文章出处登录后可见!