目录
一,点云读取
二,点云写入
二,点云显示
三、 open3d支持如下点云文件类型
四、代码及结果示例
一,点云读取
read_point_cloud(filename, format='auto', remove_nan_points=True, remove_infinite_points=True, print_progress=False):
参数:
- filename (str): 点云文件路径
- format (str, optional, default='auto'): 输入文件格式filehe的路径。 如果未指定或设置为“auto”,则从文件扩展名推断格式
- remove_nan_points (bool, optional, default=False): 如果True,所有包含NaN的点都将从PointCloud中删除。
- remove_infinite_points (bool, optional, default=False): 如果为True,所有包含无限值的点都将从PointCloud中删除
- print_progress (bool, optional, default=False): 如果设置为true,控制台中会显示一个进度条
返回:
- open3d.geometry.PointCloud
默认情况下,Open3D尝试通过文件名扩展名推断文件类型。
pcd = o3d.io.read_point_cloud("../../test_data/my_points.txt", format='xyz')
也可以显式地指定文件类型。 在这种情况下,文件扩展名将被忽略。
二,点云写入
write_point_cloud(filename, pointcloud, write_ascii=False, compressed=False, print_progress=False)
参数:
- filename (str): 点云文件保存路径名.
- pointcloud (open3d.geometry.PointCloud): 目标点云
- compressed (bool, optional, default=False): 设置为' ' True ' '以压缩格式写入。
- print_progress (bool, optional, default=False):如果设置为true,控制台中会显示一个进度条
返回:
- bool类型
保存一个点云(o3d.pcd)到本地文件
二,点云显示
draw_geometries(window_name='Open3D', width=1920, height=1080, left=50, top=50, point_show_normal=False, mesh_show_wireframe=False, mesh_show_back_face, *args, **kwargs):
参数:
- geometry_list (List[open3d.geometry.Geometry]): 可视化点云列表。
- window_name (str, optional, default='Open3D'): 可视化窗口名称。
- width (int, optional, default=1920): 可视化窗口宽
- height (int, optional, default=1080): 可视化窗口高
- left (int, optional, default=50): 可视化窗口左边距
- top (int, optional, default=50): 可视化窗口上边距
- point_show_normal (bool, optional, default=False): 如果设置为True,可视化点的法向量。
- mesh_show_wireframe (bool, optional, default=False): 如果设置为true,可视化网格线框。
- mesh_show_back_face (bool, optional, default=False): 可视化网格三角形背面。
返回:
- None
三、 open3d支持如下点云文件类型
Format |
Description |
---|---|
|
|
|
|
|
每行包含 |
|
第一行是点数. 接下来的行遵循如下其中一种格式: |
|
见 多边形格式, ply文件可以包含点云和mesh网格数据 |
|
见 点云数据文章来源:https://www.toymoban.com/news/detail-439462.html |
四、代码及结果示例
import open3d as o3d
import numpy as np
print("Load a ply point cloud, print it, and render it")
# ply_point_cloud = o3d.data.PLYPointCloud()
plyname = r'fragment.ply'
#读点云
pcd = o3d.io.read_point_cloud(plyname)
print(pcd)
print(np.asarray(pcd.points))
#点云显示
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])
#保存点云
o3d.io.write_point_cloud("save.pcd", pcd)
文章来源地址https://www.toymoban.com/news/detail-439462.html
到了这里,关于open3d-点云读写和显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!