open3d-点云读写和显示

目录

一,点云读取

二,点云写入

二,点云显示

三、 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

xyz

每行包含[x, y, z], 其中 xyz 分别是三维坐标

xyzn

每行包含[x, y, z, nx, ny, nz], 其中 nxnynz 是法向量

xyzrgb

每行包含 [x, y, z, r, g, b], 其中rgb 是[0, 1]的float数据

pts

第一行是点数. 接下来的行遵循如下其中一种格式:[x, y, z, i, r, g, b][x, y, z, r, g, b][x, y, z, i] or [x, y, z], 其中xyzi 是 double类型 ,rgb 是 uint8类型

ply

见 多边形格式, ply文件可以包含点云和mesh网格数据

pcd

见 点云数据

​四、代码及结果示例

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)

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月亮299

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值