我有一个应用程序,我成功地从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:要在窗口中打印的文本
xpos:x中的位置
ypos:y中的位置
r:red
g:绿色
b:蓝色
id:文字ID标签
似乎函数addText()将文本放在PIXEL x和y值而不是实际值(米)上。但是,PCL的其他方法,例如" addPoint()",addCircle()等确实根据实际测量结果放置数据。
是否有人有过将空间坐标转换为PCL可视化工具中的像素或以其他方式成功绘制文本的经验?
以下是我的应用程序的屏幕截图。簇以红色绘制,在质心周围有一个白色圆圈。在左下角,我打印每个群集的距离。可以看出,它们只是堆叠在一起而不是添加到它自己的白色圆圈之上。
感谢任何帮助
问候 Screenshot
答案 0 :(得分:1)
Okey我使用了一个名为pcl :: visualization :: PCLVisualizer :: addText3D 的函数。
不支持擦除/更新在一段时间内添加的所有文本字段,因此总是需要知道每个相应文本的ID标记并迭代它们以擦除/更新它们。
您可以使用以下功能删除文本:pcl :: visualization :: PCLVisualizer :: removeText3D
但请记住,文本ID标签与其他ID名称标签共享相同的内存空间(例如,您给出了圆圈,云或圆柱等的名称)。这意味着如果您尝试添加名称为“abc”的文本,如果您的窗口中有一个名为“abc”的圆圈,则命令将失败。
下面是一个关于它现在看起来如何的可视化示例。Obstacle distance plotting