如果对对象的三维框进行了注释,如何标记点云?

2024-06-05 23:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试注释我的点云数据。我找到了很多工具,但只能通过Supervisely访问3D点云工具的演示版。一旦JSON文件的注释被一个完整的JSON文件输出框中。它包含类和全局位置、方向和方框的尺寸。如何使用此文件为这些三维框内的点指定标签。我想要输出格式为.pcd文件或.bin文件。 JSON文件的输出如下:

[{"id":36698,"name":"vel_1558647824006782.pcd","annotations":[{"className":"Car","geometryType":"cuboid","classId":957,"geometry":{"position":{"x":9.539855967959713,"y":18.342023271012913,"z":0.43944128482454614},"rotation":{"x":0,"y":0,"z":0},"dimensions":{"x":5.691547052392309,"y":1.6625674002633986,"z":1.757779283656416}}},{"className":"ground","geometryType":"cuboid","classId":958,"geometry":{"position":{"x":28.890481890779242,"y":8.463823613489927,"z":-1.0314986175132965},"rotation":{"x":0,"y":0,"z":0},"dimensions":{"x":96.34273328620523,"y":18.714553504372063,"z":1.0544185995045456}}}]}]

我想用PCL的crop_box filter。但有没有其他办法可以解决这个问题。如果有人能给我指出其他点云注释工具,这也会帮助我解决问题?在


Tags: 文件工具数据jsonpositiondimensionsgeometryrotation
1条回答
网友
1楼 · 发布于 2024-06-05 23:21:50

我能够编写一个c++脚本来读取json文件,并使用PCL的cropbox过滤器来解决这个问题。采用的方法如下:

std::ifstream ifs("somepath.json");
json j = json::parse(ifs);
  • 2) 提取每个方框的“位置”(长方体的质心)、“长方体的方向”、“长方体的尺寸”和“类名”。下面的代码展示了一种将位置数据提取到std::vector中的方法。(我正在迭代框的数量。)
^{pr2}$
  • 3)获取长方体顶点的最大和最小(x,y,z)坐标点。这将作为cropbox过滤器的输入。(注意:x、y、z点不必与单个顶点相关。Xmin将是所有8个顶点中的最小x,Ymin将是所有8个顶点的最小值,依此类推。)

  • 4)使用PCL的cropbox过滤器。这允许您获得给定框内所有点的索引。示例可以找到herehere

  • 5) 根据长方体的类别,为点云索引处的点指定不同的颜色。在
  • 6) 保存点云。在

这是一种从输入json文件标记点云的每个点的通用方法,该文件包含3D立方体的位置、尺寸和方向信息。在

相关问题 更多 >