分享一波简单的可视化bin格式点云的方法。
先大概讲下背景,目前激光雷达采集的点云文件大多基于ROS,然后转化为pcd、bin格式进行处理。(ros-pcd-bin格式之间相互转换格式有相应的工具,如果需要我后面更新在github)
大多数人都会使用pcl库来处理pcd格式点云,但不得不说,配置pcl的点云库真的真的太多坑,直接建议不要自己配环境,条件允许使用docker 找个合适的镜像就行。但是要进行点云可视化,在docker image里还要进行主机与容器之间的端口映射,如果远程服务器的话更复杂一些(不要问我怎么知道的/ )
如果仅需要进行可视化,建议参照KITTI数据集采用bin格式来处理,真的简单太多!!!下面是正文:(参考大佬的,做个记录)
方法一:numpy+mayavi.mlab
1.安装依赖库
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install mayavi -i https://pypi.tuna.tsinghua.edu.cn/simple
2.读取.bin格式文件进行可视化
import numpy as np
import mayavi.mlab
# lidar_path更换为自己的.bin文件路径
pointcloud = np.fromfile(str("lidar_path"), dtype=np.float32, count=-1).reshape([-1, 4])
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
degr = np.degrees(np.arctan(z / d))
vals = 'height'
if vals == "height":
col = z
else:
col = d
fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 500))
mayavi.mlab.points3d(x, y, z,
col, # Values used for Color
mode="