# 绘制矩形框 def draw_bounding_box(pcd, label): corners = get_box_corners(label) lines = [[0, 1], [1, 2], [2, 3], [3, 0], [4, 5], [5, 6], [6, 7], [7, 4], [0, 4], [1, 5], [2, 6], [3, 7]] colors = [[0, 0, 0] for i in range(len(lines))] line_set = o3d.geometry.LineSet(points=o3d.utility.Vector3dVector(corners), lines=o3d.utility.Vector2iVector(lines)) line_set.colors = o3d.utility.Vector3dVector(colors) pcd += line_set return pcd # 获取矩形框的8个顶点坐标 def get_box_corners(label): h, w, l = label['dimensions'] x, y, z = label['location'] ry = label['rotation_y'] # 3D bounding box corners corners = np.array([ [-l / 2, -h, -w / 2], [l / 2, -h, -w / 2], [l / 2, -h, w / 2], [-l / 2, -h, w / 2], [-l / 2, 0, -w / 2], [l / 2, 0, -w / 2], [l / 2, 0, w / 2], [-l / 2, 0, w / 2] ]) # rotation rot_mat = np.array([ [np.cos(ry), 0, np.sin(ry)], [0, 1, 0], [-np.sin(ry), 0, np.cos(ry)] ]) corners = corners @ rot_mat.T # translation corners += np.array([x, y, z]) return corners # 主函数 if __name__ == '__main__': pcd_file = '/home/lang/Documents/orr-small/lidar_4d/1547120787645464.bin' label_file = '/home/lang/Documents/orr-small/label_3d/1547120787645464.txt' pcd = read_bin(pcd_file) labels = read_label(label_file) for label in labels: if label['type'] == 'car': pcd = draw_bounding_box(pcd, label) o3d.visualization.draw_geometries([pcd])得到的图像没有矩形框
时间: 2023-06-26 08:05:04 浏览: 40
可能是因为你的代码存在一些问题,可以逐步排查。首先,检查读取的点云数据和标签文件是否正确,可以打印出来进行检查。其次,检查获取矩形框顶点坐标的函数是否正确,可以单独调用该函数并打印输出结果进行检查。最后,检查绘制矩形框的函数是否正确,可以在绘制完矩形框后打印输出点云数据进行检查。如果还存在问题,可以将代码和数据文件一起发给我,我可以帮你进行调试。
相关问题
# 绘制矩形框 def draw_bounding_box(pcd, label): corners = get_box_corners(label) lines = [[0,1],[1,2],[2,3],[3,0],[4,5],[5,6],[6,7],[7,4],[0,4],[1,5],[2,6],[3,7]] colors = [[1, 0, 0] for i in range(len(lines))] line_set = o3d.geometry.LineSet(points=o3d.utility.Vector3dVector(corners), lines=o3d.utility.Vector2iVector(lines)) line_set.colors = o3d.utility.Vector3dVector(colors) pcd += line_set return pcd将矩形框的颜色改成黄色
可以将colors修改为[[1, 1, 0] for i in range(len(lines))],即将红色和绿色的值都设为1,蓝色的值为0,表示黄色。修改后的代码如下:
```
def draw_bounding_box(pcd, label):
corners = get_box_corners(label)
lines = [[0,1],[1,2],[2,3],[3,0],[4,5],[5,6],[6,7],[7,4],[0,4],[1,5],[2,6],[3,7]]
colors = [[1, 1, 0] for i in range(len(lines))] # 将颜色修改为黄色
line_set = o3d.geometry.LineSet(points=o3d.utility.Vector3dVector(corners), lines=o3d.utility.Vector2iVector(lines))
line_set.colors = o3d.utility.Vector3dVector(colors)
pcd += line_set
return pcd
```
绘制矩形框 def draw_bounding_box(pcd, label): corners = get_box_corners(label) lines = [[0,1],[1,2],[2,3],[3,0],[4,5],[5,6],[6,7],[7,4],[0,4],[1,5],[2,6],[3,7]] colors = [[1, 0, 0] for i in range(len(lines))] line_set = o3d.geometry.LineSet(points=o3d.utility.Vector3dVector(corners), lines=o3d.utility.Vector2iVector(lines)) line_set.colors = o3d.utility.Vector3dVector(colors) pcd += line_set return pcd将矩形框的颜色改成black
可以将 colors = [[0, 0, 0] for i in range(len(lines))],将所有的颜色设置为黑色。然后再将 line_set.colors 赋值为 o3d.utility.Vector3dVector(colors)。修改后的代码如下:
```
def draw_bounding_box(pcd, label):
corners = get_box_corners(label)
lines = [[0,1],[1,2],[2,3],[3,0],[4,5],[5,6],[6,7],[7,4],[0,4],[1,5],[2,6],[3,7]]
colors = [[0, 0, 0] for i in range(len(lines))]
line_set = o3d.geometry.LineSet(points=o3d.utility.Vector3dVector(corners), lines=o3d.utility.Vector2iVector(lines))
line_set.colors = o3d.utility.Vector3dVector(colors)
pcd += line_set
return pcd
```