点云数据显示是查看点云数据及感性认识必不可少的一个环节。因为在实际场景中,可能会涉及到很多的算法步骤,处理结果是不是我们自己想要的,就需要查看点云数据。
为此,我将以此博客记录如何使用python代码实现点云数据的显示,如下:
复制即可使用代码如下:
import numpy as np
import mayavi.mlab
import os
def build_dir(root):
if not os.path.exists(root):
os.makedirs(root)
return root
def visul_velodyne(velodyne_root, save_path=None, show=False):
# 000010.bin这里需要填写文件的位置
pointcloud = np.fromfile(velodyne_root, dtype=np.float32, count=-1).reshape([-1, 4])
print(pointcloud.shape)
x = pointcloud[:, 0] # x position of point
y = pointcloud[:, 1] # y position of point
z = pointcloud[:, 2] # z position of point
r = pointcloud[:, 3] # reflectance value of point
d = np.sqrt(x ** 2 + y ** 2) # Map Distance from sensor
vals = 'height'
if vals == "height":
col = z
else:
col = d
fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 500))
# fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(1908, 1024))
mayavi.mlab.points3d(x, y, z,
col, # Values used for Color
mode="point",
colormap='spectral', # 'bone', 'copper', 'gnuplot'
# color=(0, 1, 0), # Used a fixed (r,g,b) instead
figure=fig,
)
x = np.linspace(5, 5, 50)
y = np.linspace(0, 0, 50)
z = np.linspace(0, 5, 50)
mayavi.mlab.plot3d(x, y, z)
if save_path is not None:
mayavi.mlab.savefig(filename=save_path) # 保存图片 filename为“.../../*.png”
if show:
mayavi.mlab.show()
if __name__ == '__main__':
velodyne_file = r'F:\ThrDet\data\kitti_d\training\velodyne'
for name in os.listdir(velodyne_file):
if name[-3:] == 'bin':
velodyne_root = os.path.join(velodyne_file, name)
out_dir = build_dir(os.path.join(velodyne_file, 'out_dir'))
save_path = os.path.join(out_dir, name[:-3] + 'png')
visul_velodyne(velodyne_root, save_path=save_path, show=True)
代码测试结果显示如下:
评论(0)
您还未登录,请登录后发表或查看评论