在使用深度学习算法检测3维点云时候, 没有合适的可视化工具, 其实open3d是一个很好用的可视化工具
点云显示及连续帧动画显示可以参考上一篇文章
画3D矩形框,代码如下:
def custom_draw_geometry(pcd,linesets):
vis = o3d.visualization.Visualizer()
vis.create_window()
vis.add_geometry(pcd)
vis.add_geometry(linesets)
render_option = vis.get_render_option()
render_option.point_size = 4
render_option.background_color = np.asarray([0, 0, 0])
vis.run()
vis.destroy_window()
if __name__ == "__main__":
points_box = *** # 3D框的8个点
pc = *** # 3维点云
if len(pc) <= 300:
continue
lines_box = np.array([[0, 1], [1, 2], [0, 3], [2, 3], [4, 5], [4, 7], [5, 6], [6, 7],
[0, 4], [1, 5], [2, 6], [3, 7]])
colors = np.array([[0, 1, 0] for j in range(len(lines_box))])
line_set = o3d.geometry.LineSet()
line_set.points = o3d.utility.Vector3dVector(points_box)
line_set.lines = o3d.utility.Vector2iVector(lines_box)
line_set.colors = o3d.utility.Vector3dVector(colors)
point_cloud = o3d.geometry.PointCloud()
point_cloud.points = o3d.utility.Vector3dVector(pc[:,:3])
# generateBox(point_cloud)
custom_draw_geometry(point_cloud, line_set)
若是出现3D框连线不对的问题,可以调整lines_box
中的顶点连线的顺序