点到线的距离
1 dev_close_window () 2 read_image (Image, '测量/0.bmp') 3 get_image_size (Image, Width, Height) 4 dev_open_window (0, 0, Width, Height, 'black', WindowHandle) 5 6 dev_display (Image) 7 8 * 绘制直线 9 draw_line (WindowHandle, Row1, Column1, Row2, Column2) 10 gen_region_line (Line1, Row1, Column1, Row2, Column2) 11 12 draw_circle (WindowHandle, CircleRow,CircleCol, CircleRadius) 13 14 * 根据绘制的直线坐标构建参数对象 15 Line1Param := [Row1, Column1, Row2, Column2] 16 CircleParam := [CircleRow,CircleCol, CircleRadius] 17 * 1.创建计算测量句柄 18 create_metrology_model (MetrologyHandle) 19 * 2.设置测量模型图像的大小,主要是为了提高效率 20 set_metrology_model_image_size (MetrologyHandle, Width, Height) 21 * 3.添加测量模型对象 22 * 参数1:测量句柄 23 * 参数2:要查找的模型类型 可以是 线 圆 椭圆 旋转矩形 24 * 参数3:对应的模型参数 25 * ‘圆形’:类型圆的计量对象的几何形状由其中心(行,列)和半径指定 26 * ‘旋转矩形’:ShapeParam = [行,列,Phi,长度1,长度2] 27 * ‘椭圆’:ShapeParam = [行,列,Phi,Radius1,Radius2] 28 * ‘线’:ShapeParam = [RowBegin,ColumnBegin,RowEnd,ColumnEnd] 29 * 参数4:MeasureLength1 垂直于边界的测量区域的一半长度 半长 30 * 参数5:MeasureLength2 与边界相切的测量区域的一半长度 半宽 vp中的搜索长度类似 31 * 参数6:MeasureSigma Sigma的高斯函数用于平滑 默认值:1.0 类似于过滤一半像素 32 * 参数7:MeasureThreshold 最小边缘幅度 对比度阈值 33 * 参数8:GenParamName 通用参数的名称 默认值: [] 34 * 参数9:GenParamValue 通用参数的值 默认值: [] 35 * 参数10:索引 创建的计量对象的索引 36 *add_metrology_object_generic (MetrologyHandle, 'line', Line1Param, 20, 5, 1, 30, [], [], IndexLine) 37 add_metrology_object_generic (MetrologyHandle, ['line','circle'],[Line1Param, CircleParam],20, 5, 1, 30, [], [], Index) 38 39 40 * 参数1:测量句柄 41 * 参数2:Index:指定测量对象,为all时所有计量对象的参数都被设置(‘all’) 42 * 参数3:GenParamName:输入参数名称;默认:‘num_instances’,参考: 43 * 'measure_length1':区域,垂直于边界的测量区域的一半长度 44 * 'measure_length2':区域,相切于边界的测量区域的一半长度 45 * 'measure_distance':区域,两个测量区域中心之间的距离 46 * 'num_measures':区域,测量区域数 47 * 'measure_sigma':测量,用于平滑的高斯函数的 Sigma 48 * 'measure_threshold':测量,最小边缘幅度阈值 49 * 'measure_select':测量,边缘端点的选择('last'、'first') 50 * 'measure_transition':测量,方向('all'、'negative'、 'positive') 51 * 'measure_interpolation':测量,插值类型 52 * 'min_score':拟合,最小分数 53 * 'num_instances':拟合,成功拟合实例的最大数量 54 * 'distance_threshold':拟合,距离阈值 55 * set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'all') 56 * 4.设置测量句柄的参数 57 * 设置找线的极性 由黑到白 由白到黑 all 58 set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'all') 59 * 设置测量区域的个数 卡尺数量 60 set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 50) 61 * 设置最少多少个点可以拟合成功 62 set_metrology_object_param (MetrologyHandle, 'all', 'num_instances', 30) 63 * 设置平滑系数 64 set_metrology_object_param (MetrologyHandle, 'all', 'measure_sigma', 2) 65 * 半长 卡尺搜索长度 66 set_metrology_object_param (MetrologyHandle, 'all', 'measure_length1', 5) 67 * 半宽 卡尺投影长度 68 set_metrology_object_param (MetrologyHandle, 'all', 'measure_length2', 0.5) 69 * 对比度阈值 70 set_metrology_object_param (MetrologyHandle, 'all', 'measure_threshold', 20) 71 * 设置找线插值方法 72 set_metrology_object_param (MetrologyHandle, 'all', 'measure_interpolation', 'bilinear') 73 * 设置查找到的第一条边还是第二条边 74 set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'last') 75 * 设置最小分数 76 set_metrology_object_param (MetrologyHandle, 'all', 'min_score', 0.7) 77 * 5.测量并拟合测量模型中所有计量对象的几何形状 78 apply_metrology_model (Image, MetrologyHandle) 79 * 6.获取测量区域和计量模型的计量对象的边缘位置结果 80 * 参数1:Contours 测量区域的矩形XLD轮廓 81 * 参数2:处理计量模型 82 * 参数3:计量对象的索引 默认值:‘all’ 83 * 参数4:Transition 选择浅色/深色或深色/浅色边缘 默认值:‘all’ 84 * 参数5、6:输出查找到点的行列坐标 85 get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column) 86 * 7.把找到的点通过十字叉显示 87 * 为每个输入点(行、列)生成交叉形状的XLD轮廓 88 * Cross(out):生成XLD轮廓 89 * Row(in):输入点集的行坐标 90 * Col(in):输入点集的列坐标,Col元组的个数与Row元组的个数相同 91 * Size(in):十字形长度,长度大于等于0 92 * Angle(in):十字形方向 93 gen_cross_contour_xld (Cross, Row, Column, 3, rad(45)) 94 * 8.获取计量模型的测量结果 95 * 参数1:测量句柄 96 * 参数2:Index 输出计量对象的索引 查找多个结果时用于分辨 97 * 参数3:Instance 输入测量对象的实例 98 * 参数4:通用参数的名称 默认值:‘result_type’ 值列表:‘angle_direction’,‘result_type’,‘used_edges’ 99 * 如果GenParamName设置为’result_type’,则GenParamValue允许控制计量对象的返回方式和结果。 100 * 可以立即查询查询的计量对象的所有测量参数,可以单独查询特定参数或者可以查询计量对象的分数 101 102 * ‘angle_direction’:该参数确定由拟合产生的角度的旋转方向。 103 * 将参数’angle_direction’设置为’正’,在物体的主轴和坐标系的水平轴之间以数学正方向(逆时针方向)指定角度。 104 * 将参数’angle_direction’设置为’负’,在对象的主轴和坐标系的水平轴之间沿数学负方向(顺时针)指定角度。角度的结果以弧度返回。 105 * ‘used_edges’: 106 * 要查询实际用于拟合度量对象的边缘点,可以选择以下GenParamValue值: 107 * ‘行’:返回用于拟合度量对象的边的行坐标。 108 * ‘列’:返回用于拟合度量对象的边的列坐标。 109 * ‘振幅’:返回用于拟合度量对象的边缘的边缘幅度。 110 * 参数5:泛型参数的值 默认值:‘all_param’ 111 * 参数6:线结果 112 get_metrology_object_result (MetrologyHandle, 0, 0, 'result_type', 'all_param', LineParameter) 113 *获取测量结果里的开始行坐标 114 get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'row_begin', RowBegin) 115 *获取测量结果里的开始列坐标 116 get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'column_begin', ColBegin) 117 *获取测量结果里的结束行坐标 118 get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'row_end', RowEnd) 119 *获取测量结果里的结束列坐标 120 get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'column_end', ColEnd) 121 * 圆结果 122 get_metrology_object_result (MetrologyHandle, 1, 0, 'result_type', 'all_param', CircleParameter) 123 * 点到线的距离 124 distance_pl (CircleParam[0],CircleParam[1],RowBegin, ColBegin, RowEnd, ColEnd, Distance) 125 * 点到线段的距离 126 distance_ps (CircleParam[0],CircleParam[1],RowBegin, ColBegin, RowEnd, ColEnd,DistanceMin, DistanceMax) 127 128 clear_metrology_model (MetrologyHandle)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)