Python有很多库都可以处理点云,比如Python-PCL、Open3D等等。
- Python-PCL库已经很久没有维护了,而且安装极其麻烦!
- Open3D是由intel发布的3D点云可视化库,点云可视化和渲染都很方便,重要的是安装方便!!!
1. 安装Python Open3D
环境:Ubuntu 16.04
pip install open3d==0.9.0.0
注意: open3d 0.9.0.0
只支持python 2.7,3.5,3.6,3.7。如果直接安装0.10.0及以上的版本会报如下错误:
ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27’ not
found (required by
/home/xxxx/xxxx/lib/python3.7/site-packages/open3d/open3d_pybind.cpython-37m-x86_64-linux-gnu.so)
2. 使用Open3D读取bin格式的点云文件
# bin文件为2进制文件
lidar_path = '000000.bin'
# reshape成 N*4,然后去掉最后1列(一般是反射率或其它值),只保留前3列
points = np.fromfile(lidar_path, dtype=np.float32).reshape(-1, 4)
points = points[:, 0:3]
# 创建open3d PointCloud对象
cloud = o3d.geometry.PointCloud()
# 将numpy array转换为PointCloud格式
cloud.points = o3d.utility.Vector3dVector(points)
参考:open3d numpy array 转换为point cloud
3. 可视化点云
可用如下这条指令直接显示:
# 可用这条指令直接显示
o3d.visualization.draw_geometries([cloud], window_name="Open3D")
如果想配置其它可视化的参数,可参考以下代码:
# 创建窗口对象
vis = o3d.visualization.Visualizer()
# 设置窗口标题
vis.create_window(window_name="Open3D")
# 设置点云大小
vis.get_render_option().point_size = 1
# 设置颜色背景为黑色
opt = vis.get_render_option()
opt.background_color = np.asarray([0, 0, 0])
# 设置点的颜色为白色
cloud.paint_uniform_color([1, 1, 1])
# 将点云加入到窗口中
vis.add_geometry(cloud)
vis.run()
vis.destroy_window()
4. 点云上色
注意: Open3D中点云的RGB颜色范围为[0, 1],数值类型为float64。
参考:
5. 可视化窗口操作
6. 实时显示点云
参考:
7.以固定视角显示点云(保存/读取视角参数)
可重点学习以下博文,写的都很全面:
- 【Open3d】使用open3d可视化(如果是搞点云语义分割的,重点推荐这篇)
- 【API】Open3D库的使用教程