听说Open3D很好用,我先学习学习,后面再转战PCL,毕竟PCL是点云届的经典大佬*.*
本人使用的是python版本噢:)
1.官网功能介绍及例程
http://www.open3d.org/docs/release/tutorial/geometry/index.html
也可以参考这位朋友整理的Open3D算法资料:
https://blog.youkuaiyun.com/qq_40985985/article/details/108715871?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
2.环境配置
ubuntu18.04下可以使用pip命令:
pip install open3d
安装完毕后,在终端使用python:
yy@yy:~$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import open3d
>>>
如果没有报错说明安装成功>.<
3.开始使用
官网提供了丰富的python接口教程,动手试一试吧:
http://www.open3d.org/docs/release/tutorial/geometry/python_interface.html
3.1 读取点云数据并可视化
需要使用的函数有:
1)read_point_cloud 文件读取函数
2)draw_geometries 可视化函数
yy@yy:~$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import open3d as o3d
>>> pcd = o3d.io.read_point_cloud("/home/yy/文档/pointcloud/desk_1.pcd") ###输入被读取文件的路径
>>> print(pcd)
PointCloud with 1595906 points.
>>> import numpy as np
>>> print(np.asarray(pcd.points))
[[-0.7070244 -0.52971417 1.2640001 ]
[-0.7070244 -0.52084869 1.2640001 ]
[-0.7070244 -0.51198316 1.2640001 ]
...
[-0.76719701 -0.32806134 1.2508162 ]
[-0.77002394 -0.32122216 1.2594384 ]
[-0.76220942 -0.31320193 1.2549695 ]]
>>> o3d.visualization.draw_geometries([pcd],
zoom=0.3412,
front=[0.4257, -0.2125, -0.8795],
lookat=[2.6172, 2.0475, 1.532],
up=[-0.0694, -0.9768, 0.2024])
执行完毕后会显示出我们读取文件的3d图像:
3.2 体素下采样
体素下采样使用常规体素网格从输入点云创建统一下采样的点云,它通常用作许多点云处理任务的预处理步骤。
1) 点被存储到体素中;
2) 每个占用的体素通过平均内部的所有点来精确生成一个点。
>>> downpcd = pcd.voxel_down_sample(voxel_size=0.05) ###使用0.05的体素对点云下采样,值越大,得到点数越少
>>> o3d.visualization.draw_geometries([downpcd],
zoom=0.3412,
front=[0.4257, -0.2125, -0.8795]