设置首页收藏本站
开启左侧

[文档] halcon中获取某个点到区域的最近点坐标?

[复制链接]
绝地武士 发表于 2025-10-14 18:38:53 | 显示全部楼层 |阅读模式
halcon有计算距离的算子
  1. distance_pr(Region : : Row, Column : DistanceMin, DistanceMax)
复制代码
但是这个算子,只返回最小和最大的距离,不提供点与区域最近的距离交点在哪儿?无从得知。

经过查资料,发现这个算子closest_point_transform是计算点到区域最近点和距离的首选算子(它生成距离图像和最近点图像,支持欧几里得度量)。
它的优点:它计算欧几里得距离变换,适用于区域外部/内部点。如果点在区域内,距离为0,最近点为自身。

参数表:
  1. 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:输入图像的尺寸。

这个算子运行会耗费一点时间,生成后就可以从矢量图上根据你输入的点的坐标获取最短距离的坐标了。
  1. get_image_size (Image, Width, Height)
  2. closest_point_transform (OuteRegion, Distances, ClosestPoints, 'euclidean', 'false', 'absolute', Width, Height)
  3. *下面(0,0)可以使用循环反复获取某些点的最近坐标
  4. get_grayval (ClosestPoints, 0, 0, ClosestVal)
复制代码
这里我获取(0,0)到区域最短路径点的坐标,ClosestVal里面存的(Row, Column)就是对应点在区域上的坐标了。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
大凡光学,专注标定板提供
Mr.Han 发表于 2025-10-15 09:03:14 | 显示全部楼层
学习一下,感谢分享
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
xah 发表于 2025-11-4 09:56:55 | 显示全部楼层
学习一下,感谢分享
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表