halcon有计算距离的算子
- distance_pr(Region : : Row, Column : DistanceMin, DistanceMax)
复制代码 但是这个算子,只返回最小和最大的距离,不提供点与区域最近的距离交点在哪儿?无从得知。
经过查资料,发现这个算子closest_point_transform是计算点到区域最近点和距离的首选算子(它生成距离图像和最近点图像,支持欧几里得度量)。
它的优点:它计算欧几里得距离变换,适用于区域外部/内部点。如果点在区域内,距离为0,最近点为自身。
参数表:
- closest_point_transform(Region : Distances, ClosestPoints : Metric, Foreground, ClosestPointMode, Width, Height : )
复制代码
输入参数:
Region:需要计算距离的参考区域。
输出图形参数:
Distances:图像,表示每个像素到输入区域 Region 的距离(单通道,浮点型)。
ClosestPoints:图像,表示每个像素对应的区域边界上最近点的坐标(向量图,存储的是图像上的XY坐标)。
输入控制参数:
Metric:距离度量(例如,'euclidean' 欧几里得距离)。
Foreground:'true'(区域内)或 'false'(区域外)。
ClosestPointMode:'absolute'(图像坐标)或 'relative'(相对坐标)。
Width, Height:输入图像的尺寸。
这个算子运行会耗费一点时间,生成后就可以从矢量图上根据你输入的点的坐标获取最短距离的坐标了。
- get_image_size (Image, Width, Height)
- closest_point_transform (OuteRegion, Distances, ClosestPoints, 'euclidean', 'false', 'absolute', Width, Height)
- *下面(0,0)可以使用循环反复获取某些点的最近坐标
- get_grayval (ClosestPoints, 0, 0, ClosestVal)
复制代码 这里我获取(0,0)到区域最短路径点的坐标,ClosestVal里面存的(Row, Column)就是对应点在区域上的坐标了。 |