在 PCL 可视化工具中的点旁边添加文本

Add text next to a Point in PCL visualizer

我有一个应用程序,我成功地实时绘制了 LiDAR 的 2D 激光距离数据,并且 运行 PCL 的欧几里得聚类算法以不同的颜色绘制这些聚类点。然而,我想在每个检测到的集群旁边添加一个文本,并告诉它与传感器的距离。我确实有每个检测到的簇的质心点的坐标但是当我尝试使用 addText:

bool pcl::visualization::PCLVisualizer::addText (const std::string & text, int xpos, int ypos,double r,double g,double b,const std::string & id = "")

text:要在 window

中打印的文本

xpos: x 中的位置

ypos: y 中的位置

r: 红色

克:绿色

b: 蓝色

id: 文本 ID 标签

函数 addText() 似乎将文本放入 PIXEL x 和 y 值,而不是实际值(米)。但是,PCL 的其他方法,例如 "addPoint()"、addCircle() 等确实是根据真实世界的测量值放置数据。

有没有人有在 PCL 可视化工具中将空间坐标转换为像素的经验,或者是否以其他方式成功绘制过文本?

下面是我的应用程序的屏幕截图。簇以红色绘制,质心周围有一个白色圆圈。在左下角,我正在打印每个集群的距离。可以看出,它们只是堆叠在一起,而不是添加到自己的白色圆圈之上。

感谢任何帮助

问候 Screenshot

好的,我让它与一个名为的函数一起工作:pcl::visualization::PCLVisualizer::addText3D.

不支持 erasing/updating 虽然在一段时间内添加的所有文本字段,因此总是需要知道每个文本的 ID 标签并遍历它们以 erase/update 他们。

您可以使用函数删除文本:pcl::visualization::PCLVisualizer::removeText3D

但是请记住,文本 ID 标签与其他 ID 名称标签(例如您给圆圈、云或圆柱等命名的名称)共享相同的内存 space。这意味着,如果您尝试添加名称为 "abc" 的文本,如果您的 window 中有一个名为 "abc".

的圆圈,则它们的命令将失败

下面是它现在的样子的直观示例。Obstacle distance plotting