• 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

    见 点云数据

    ​四、代码及结果示例

    1. import open3d as o3d
    2. import numpy as np
    3. print("Load a ply point cloud, print it, and render it")
    4. # ply_point_cloud = o3d.data.PLYPointCloud()
    5. plyname = r'fragment.ply'
    6. #读点云
    7. pcd = o3d.io.read_point_cloud(plyname)
    8. print(pcd)
    9. print(np.asarray(pcd.points))
    10. #点云显示
    11. o3d.visualization.draw_geometries([pcd],
    12. zoom=0.3412,
    13. front=[0.4257, -0.2125, -0.8795],
    14. lookat=[2.6172, 2.0475, 1.532],
    15. up=[-0.0694, -0.9768, 0.2024])
    16. #保存点云
    17. o3d.io.write_point_cloud("save.pcd", pcd)

  • 相关阅读:
    机器学习算法系列————决策树(二)
    洛谷 P4568 [JLOI2011] 飞行路线 pytho解析
    论文阅读之《Color Constancy Using CNNs》
    管理那些事
    【云原生 | Kubernetes 实战】07、Pod 高级实战:Pod 生命周期、启动钩子、停止钩子
    Qt图像处理技术十:得到QImage图像的高斯模糊
    Minio安装
    Elasticsearch语法知多少之Term query
    Elasticsearch-通过分析器进行分词
    深度学习之人脸检测算法
  • 原文地址:https://blog.csdn.net/Bolly_He/article/details/125507187