卡尺测量--halcon/opencv(c++)

halcon实现

    *///////////////////////// 计算边界测量点 ////////////////////////////////
    
    * 将上面的矩形对象添加到测量模型中
    * *     add_metrology_object_line_measure(
    * *     MetrologyHandle,     // 输入测量模型的句柄
    * *     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                // 输出创建测量对象的索引值
    * )
    * 
    
    * 设置测量模型对象的检测对象相关参数(每个计量对象可以测量一个以上的圆/矩形/线/椭圆)
    * **GenParamName参数名称***
    * 'measure_length1':区域,垂直于边界的测量区域的一半长度
    * 'measure_length2':区域,相切于边界的测量区域的一半长度
    * 'measure_distance':区域,指定两个测度区域中心之间的期望距离,设置了这个值,参数“num_measures”没有 影响力
    * 'num_measures':卡尺数量
    * 'measure_sigma':测量,用于平滑的高斯函数的 Sigma
    * 'measure_threshold':测量,最小边缘幅度阈值
    * 'measure_select':测量,边缘端点的选择('last'、'first')
    * 'measure_transition':指定了明边/明边或明边/暗边的使用( 'all', 'negative', 'positive', 'uniform'),正边缘(暗->亮);负边缘(亮->暗)
    * 'measure_interpolation':测量,插值类型( 'nearest_neighbor', 'bilinear', 'bicubic')
    * 'min_score':拟合,最小分数
    * 'num_instances':拟合,可成功拟合实例的最大数量
    * 'distance_threshold':拟合,距离阈值
    
    
    * ======================== 卡尺提取边界线 ==================================
    * 创建测量模型
    create_metrology_model (MetrologyHandle1)
    * 设置测量模型的待检测图像的宽高(提升检测时间)
    set_metrology_model_image_size (MetrologyHandle1, Width, Height)

    add_metrology_object_line_measure (MetrologyHandle, RowBegin, ColumnBegin, RowEnd, ColumnEnd, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, [], [], MetrologyLineIndices)
    * 
    * 设置测量模型对象的检测对象相关参数(每个计量对象可以测量一个以上的圆/矩形/线/椭圆)
    * **GenParamName参数名称***
    * 'measure_length1':区域,垂直于边界的测量区域的一半长度
    * 'measure_length2':区域,相切于边界的测量区域的一半长度
    * 'measure_distance':区域,指定两个测度区域中心之间的期望距离,设置了这个值,参数“num_measures”没有 影响力
    * 'num_measures':卡尺数量
    * 'measure_sigma':测量,用于平滑的高斯函数的 Sigma
    * 'measure_threshold':测量,最小边缘幅度阈值
    * 'measure_select':测量,边缘端点的选择('last'、'first')
    * 'measure_transition':指定了明边/明边或明边/暗边的使用( 'all', 'negative', 'positive', 'uniform'),正边缘(暗->亮);负边缘(亮->暗)
    * 'measure_interpolation':测量,插值类型( 'nearest_neighbor', 'bilinear', 'bicubic')
    * 'min_score':拟合,最小分数
    * 'num_instances':拟合,可成功拟合实例的最大数量
    * 'distance_threshold':拟合,距离阈值
    * 
    * 设置卡尺数量
    set_metrology_object_param (MetrologyHandle, MetrologyLineIndices, 'num_measures', 100)
    * 设置成功拟合的对象最大数量
    set_metrology_object_param (MetrologyHandle, MetrologyLineIndices, 'num_instances', Num_instances)
    * 设置测量方向
    set_metrology_object_param (MetrologyHandle, MetrologyLineIndices, 'measure_transition', Measure_transition)
    * 设置最小分数
    set_metrology_object_param (MetrologyHandle, MetrologyLineIndices, 'min_score', Min_score)
     * 插值类型
    set_metrology_object_param (MetrologyHandle, MetrologyLineIndices, 'measure_interpolation', 'bicubic')
    *
    set_metrology_object_param (MetrologyHandle, MetrologyLineIndices, 'distance_threshold', 100)
    *
    * 实施测量
    apply_metrology_model (Image, MetrologyHandle)
    * 
    * 获取测量结果
    * 
    * *     get_metrology_object_result(
    * *     MetrologyHandle,       // 输入测量模型的句柄
    * *     Index,                 // 输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    * *     Instance,              // 输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2
    * *     GenParamName,          // 输入参数名称;默认值:‘result_type’,参考:
    * *                               ‘angle_direction’,‘result_type’,‘used_edges’
    * *     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’
    * *     Parameter              // 输出结果值
    * )
    * 
    * 获取圆形检测结果
    get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'row_begin', OutRowBegin)
    get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'column_begin', OutColBegin)
    get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'row_end', OutRowEnd)
    get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'column_end', OutColEnd)
    * 获取拟合圆的轮廓
    get_metrology_object_result_contour (Contours, MetrologyHandle, 'all', 'all', 1.5)
    get_metrology_object_measures (Contour, MetrologyHandle, 'all', 'all', crossRow, crossColumn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值