Halcon2DMeasure常用算子

发布时间 2023-08-11 10:50:36作者: 写给麻衣学姐的情书

1、create_metrology_model()
  create_metrology_model( : : : MetrologyHandle)
  函数说明: 创建测量几何图形所需的数据结构/模型。

    创建测量模型,后续的使用都是围绕着句柄ModelID。

2、set_metrology_model_image_size()
  set_metrology_model_image_size( : : MetrologyHandle, Width, Height : )
  函数说明: 设置测量对象图像的大小。

    设置测量模型图像的大小,主要是为了提高效率。

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Width:输出图像宽;
    Height:输出图像高;

 

3、add_metrology_object_circle_measure()
  add_metrology_object_circle_measure( : : MetrologyHandle, Row, Column, Radius, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)
  函数说明: 添加圆形测量模型。

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Row:输入圆心的行;
    Column:输入圆心的列;
    Radius:输入圆的半径;
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30; 相当于VisionPro的卡尺搜索长度
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;   相当于VisionPro的卡尺投影长度
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;相当于过滤一半像素
    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    GenParamValue :输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;


4、add_metrology_object_ellipse_measure()
  add_metrology_object_ellipse_measure( : : MetrologyHandle, Row, Column, Phi, Radius1, Radius2, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)
  函数说明: 添加椭圆或椭圆弧测量模型。

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Row:输入椭圆圆心的行;
    Column:输入椭圆圆心的列;
    Phi:输入椭圆角度;
    Radius1:输入椭圆长半轴;
    Radius2:输入椭圆短半轴;
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;
    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;

5、add_metrology_object_line_measure()
  add_metrology_object_line_measure( : : MetrologyHandle, RowBegin, ColumnBegin, RowEnd, ColumnEnd, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)

  函数说明: 添加直线测量对象到模型。

  函数参数
    MeasureHandle:输入测量模型的句柄;
    RowBegin:输入测量区域行坐标起点;
    ColumnBegin:输入测量区域列坐标起点;
    RowEnd:输入测量区域行坐标终点;
    ColumnEnd:输入测量区域列坐标终点;
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;
    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;

6、add_metrology_object_rectangle2_measure()
  add_metrology_object_rectangle2_measure( : : MetrologyHandle, Row, Column, Phi, Length1, Length2, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)

  函数说明: 将一个矩形添加到度量模型中。

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Row:输入矩形中心点行坐标;
    Column:输入矩形中心点列坐标;
    Phi:输入主轴 Phi 的方向, Phi 的输入值会自动映射到区间(-3.14 ,3.14)。;
    ColumnEnd:输入测量区域列坐标终点;
    Length1:输入矩形较长的半边长 Length1 ;
    Length2:输入矩形较短的半边长 Length2;
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;
    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;

7、add_metrology_object_generic()
  add_metrology_object_generic( : : MetrologyHandle, Shape, ShapeParam, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)

  函数说明: 将类型为Shape的计量对象添加到计量模型中并准备矩形度量区域,模型的句柄在MetrologyHandle中传递。 Shape指定将哪种类型的对象添加到计量模型中。运算符add_metrology_object_generic在参数Index中返回添加的度量对象的索引。请注意,add_metrology_object_generic在一个运算符中提供运算符add_metrology_object_circle_measure,add_metrology_object_ellipse_measure,add_metrology_object_rectangle2_measure和add_metrology_object_line_measure的功能。
  其中:Shape参数中指定对象,ShapeParam参数值有所区别。
    圆形: 类型圆的计量对象的几何形状由其中心(行,列)和半径指定。ShapeParam = [行,列,半径]
    旋转矩形: 矩形类型的计量对象的几何形状由其中心(行,列),主轴Phi的方向以及半边长度Length1和Length2指定。 Phi的输入值自动映射到间隔。 ShapeParam = [行,列,Phi,长度1,长度2]
    椭圆: 椭圆类型的计量对象的几何形状由其中心(行,列),主轴Phi的方向,较大的半轴Radius1的长度以及较小的半轴Radius2的长度来指定。 Phi的输入值自动映射到间隔。ShapeParam = [行,列,Phi,Radius1,Radius2]
    线: 类型线的度量对象的几何形状由其起点(RowBegin,ColumnBegin)的坐标和其终点的坐标(RowEnd,ColumnEnd)描述。ShapeParam = [RowBegin,ColumnBegin,RowEnd,ColumnEnd]

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Shape:输入要测量对象的类型;默认值:‘circle’,参考值:‘circle’,‘ellipse’,‘line’,‘rectangle2’;
    ShapeParam:要添加的测量对象的参数。
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;最小增量:1.0;建议增量:10.0
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;最小增量:1.0;建议增量:10.0
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;最小增量:0.01;建议增量:0.1;限制:(0.4 <= MeasureSigma)&&(MeasureSigma <= 100)
    MeasureThreshold:输入测量阈值/最小边缘幅度;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;最小增量:0.5;建议增量:2;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;

8、set_metrology_model_param()
  set_metrology_model_param( : : MetrologyHandle, GenParamName, GenParamValue : )

  函数说明: 设置测量模型的参数。 

    主要用于设置测量对象的参考坐标系原点在模板坐标的相对位置

    这个函数和align_metrology_model()两个配合使用相当于VisionPro的CogFixtureTool工具

  函数参数
    MeasureHandle:输入测量模型的句柄;
    GenParamName:输入参数名称;参考: ‘camera_param’,输入相机参数由GenParamName= 'camera_param’指定,CameraParam是相机;
       ‘plane_pose’(是否相机三维姿态);
      ‘reference_system’(根据图像坐标系的平移(行、列)和旋转角度(角度),定义一种新的参考系统);
      ‘scale’(期望单位与原始单位的比率);
    GenParamValue:输入参数值;参考:1.0, 0.1, ‘m’, ‘cm’, ‘mm’, ‘microns’, ‘um’;

9、set_metrology_object_param()
  set_metrology_object_param( : : MetrologyHandle, Index, GenParamName, GenParamValue : )

  函数说明: 为测量模型的测量对象设置参数。

    相当于VisionPro设置卡尺参数

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Index:指定测量对象,为all时所有计量对象的参数都被设置(‘all’);
    GenParamName:输入参数名称;默认:‘num_instances’,

         参考:

            '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':拟合,距离阈值

    GenParamValue:输入参数值;默认:1,参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;

10、align_metrology_model()
  align_metrology_model( : : MetrologyHandle, Row, Column, Angle : )

  函数说明: 测量模型的对齐/校准。

    这个函数和set_metrology_model_param()两个配合使用相当于VisionPro的CogFixtureTool工具

  函数参数
    MeasureHandle:输入测量模型的句柄;
    Row:对齐测量模型的列坐标;
    Column:对齐测量模型的列坐标:
    Angle:对齐测量模型的旋转角度。

 

11、apply_metrology_model()
  apply_metrology_model(Image : : MetrologyHandle : )

  函数说明: 测量并拟合测量模型中所有计量对象的几何形状。

  函数参数
    Image:输入的测量图像;
    MeasureHandle:输入测量模型的句柄;

12、get_metrology_model_param()
  get_metrology_model_param( : : MetrologyHandle, GenParamName : GenParamValue)

  函数说明: 获取对整个测量模型有效的参数。查询对整个测量模型有效的参数。测量模型由句柄MetrologyHandle定义。

  函数参数
    MeasureHandle:输入测量模型的句柄;
    GenParamName:输入参数名称;
      参考: ‘camera_param’,输入相机参数由GenParamName= 'camera_param’指定,CameraParam是相机;
      ‘plane_pose’(是否相机三维姿态);
      ‘reference_system’(根据图像坐标系的平移(行、列)和旋转角度(角度),定义一种新的参考系统);
      ‘scale’(期望单位与原始单位的比率);

    GenParamValue:输出参数值;


13、get_metrology_object_measures()
  get_metrology_object_measures( : Contours : MetrologyHandle, Index, Transition : Row, Column)

  函数说明: 获取测量区域和测量模型的测量对象的边缘位置结果。

    测量之前调用可以显示所有的卡尺XLD轮廓,测量之后调用显示所有的卡尺XLD轮廓,并获得所有卡尺找到的点的结果值

  函数参数:
    Contours:输出测量对象测量区域的矩形XLD轮廓;卡尺轮廓
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    Transition:输入选择浅色/深色或深色/浅色边缘;默认值:‘all’,可选:‘全部’,‘负面’,‘正面’;
    Row:输出测量边缘的行坐标;
    Column:输出测量边缘的列坐标;

14、get_metrology_object_model_contour()
  get_metrology_object_model_contour( : Contour : MetrologyHandle, Index, Resolution : )

  函数说明: 在图像坐标中查询/获取测量对象的模型轮廓。

 

  函数参数
    Contours:输出测量对象测量区域的矩形XLD轮廓;
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,范围:Resolution>=1.192e-7

15、get_metrology_object_param()
  get_metrology_object_param( : : MetrologyHandle, Index, GenParamName : GenParamValue)

  函数说明: 获取一个或多个测量模型的参数。

  函数参数
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    GenParamName:输出参数名称;默认值:‘num_measures’,参考: ‘column’, ‘column_begin’, ‘column_end’, ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘length1’, ‘length2’, ‘max_num_iterations’, ‘measure_distance_min’, ‘measure_distance_min’, ‘measure_interpolation’, ‘measure_length1’, ‘measure_length2’, ‘measure_select’, ‘measure_sigma’, ‘measure_threshold’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘object_params’, ‘object_type’, ‘phi’, ‘point_order’, ‘radius’, ‘radius1’, ‘radius2’, ‘rand_seed’, ‘row’, ‘row_begin’, ‘row_end’, ‘start_phi’, ‘x’, ‘x_begin’, ‘x_end’, ‘y’, ‘y_begin’, ‘y_end’;(关于参数名称,具体可查阅halcon帮助窗口—快捷键F1)
    GenParamValue:输出参数值;

16、get_metrology_object_result()
  get_metrology_object_result( : : MetrologyHandle, Index, Instance, GenParamName, GenParamValue : Parameter)

  函数说明: 获取测量模型的测量结果。用于计量模型MetrologyHandle的计量对象(有关2D计量的基本原理,请参阅create_metrology_model)。参数Index指定查询结果的计量对象。对于设置为“全部”的索引,将返回所有计量对象的结果。使用参数Instance可以指定,在Parameter中返回结果的哪些实例。通过将Instance设置为“all”返回所有实例的结果。可以使用不同的通用参数来控制Parameter中的返回值。通用参数名称在GenParamName中传递。相应的值在GenParamValue中传递。

  函数参数
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2;
    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2;
    GenParamName:输入参数名称;默认值:‘result_type’,参考:‘angle_direction’,‘result_type’,‘used_edges’;
      (1)‘result_type’:如果GenParamName设置为’result_type’,则GenParamValue允许控制计量对象的返回方式和结果。

      (2)‘angle_direction’:该参数确定由拟合产生的角度的旋转方向。将参数’angle_direction’设置为’正’,在物体的主轴和坐标系的水平轴之间以数学正方向(逆时针方向)指定角度。将参数’angle_direction’设置为’负’,在对象的主轴和坐标系的水平轴之间沿数学负方向(顺时针)指定角度。角度的结果以弧度返回。
      默认值:‘正面’,参考:‘正面’,‘负面’;

      (3)‘used_edges’:要查询实际用于拟合度量对象的边缘点,可以选择以下GenParamValue值:
        ‘行’:返回用于拟合度量对象的边的行坐标。
        ‘列’:返回用于拟合度量对象的边的列坐标。
        ‘振幅’:返回用于拟合度量对象的边缘的边缘幅度。

    GenParamValue:输入参数值;默认值:‘all_param’,参考:‘all_param’, ‘score’, ‘true’, ‘false’, ‘row’, ‘column’, ‘amplitude’, ‘radius’, ‘phi’, ‘radius1’, ‘radius2’, ‘length1’, ‘length2’, ‘row_begin’, ‘column_begin’, ‘row_end’, ‘column_end’, ‘nrow’, ‘ncolumn’, ‘distance’, ‘x’, ‘y’, ‘x_begin’, ‘y_begin’, ‘x_end’, ‘y_end’, ‘nx’, ‘ny’, ‘positive’, ‘negative’

      如果GenParamValue设置为’all_param’,则返回计量对象的所有测量参数。
        对于圆,返回值是中心的坐标和圆的半径。顺序分别是[‘row’,‘column’,‘radius’]或[‘x’,‘y’,‘radius’]。

        对于椭圆,返回值是中心的坐标,长轴’phi’的方向,较大半轴’radius1’的长度,以及椭圆的较小半轴’radius2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]或[‘x’,‘y’,‘phi’,‘radius1’,‘radius2’]。

        对于一条线,返回该线的起点和终点。顺序是[‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]或[‘x_begin’,‘y_begin’,‘x_end’,‘y_end’]

        对于矩形,返回值是中心的坐标,主轴’phi’的方向,较大的半边’length1’的长度,以及矩形的较小半边’length2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘length1’,‘length2’]或[‘x’,‘y’,‘phi’,‘length1’,‘length2’]。

    Parameter:输出结果值;

17、get_metrology_object_result_contour()
  get_metrology_object_result_contour( : Contour : MetrologyHandle, Index, Instance, Resolution : )

  函数说明: 查询(获取)测量对象的结果轮廓。  计量模型由句柄MetrologyHandle定义。
       参数Index指定查询结果轮廓的计量对象。对于设置为“全部”的索引,将返回所有计量对象的结果轮廓。
       如果对于计量对象计算了几个结果(实例),则参数Instance指定,在Contour中返回结果轮廓的实例。通过将Instance设置为’all’来获得所有实例的结果轮廓。

      获得并显示找到的圆、线、矩形、椭圆

  函数参数
    Contour:输出给定测量对象的结果轮廓; 
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2;
    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2;
    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,参考:Resolution >= 1.192e-7;

18、clear_metrology_model()

  clear_metrology_model( : : MetrologyHandle : )

  函数说明 删除测量模型并释放分配的内存。

  函数参数:
    MetrologyHandle:输入测量模型的句柄;