Open3D 可视化窗口中查看点的坐标数据

目录

一、概述

1.1实现步骤

1.2应用

二、代码实现

2.1关键函数

2.2完整代码

三、实现效果

3.1选取点

3.2数据显示


前期试读,后续会将博客加入下列链接的专栏,欢迎订阅

Open3D与点云深度学习的应用_白葵新的博客-CSDN博客

一、概述

        可以使用Open3D在可视化窗口中查看点的坐标数据,并允许用户选择点云中的点。该方法在数据验证、特征提取、调试和调优等方面具有广泛的应用。通过定义允许用户选择点的函数、创建带有编辑功能的可视化工具、读取点云数据并运行可视化窗口,可以方便地在Open3D的可视化窗口中查看和选择点云数据的详细信息。

1.1实现步骤

1.定义点云选择函数
        - 创建一个函数 pick_points,用于在Open3D的可视化窗口中选择点云中的点。
2.用户提示
        - 在控制台输出提示信息,告诉用户如何进行点的选择和撤销选择。
3.创建带有编辑功能的可视化工具
        - 使用Open3D中的 VisualizerWithEditing 类创建一个可视化工具。
        - 设置可视化窗口的名称、大小和位置。
        - 将输入的点云数据添加到可视化窗口中。
4.运行可视化工具
        - 启动可视化工具,打开可视化窗口,让用户可以在窗口中选择点。
        - 等待用户操作,让用户使用鼠标在窗口中选择点。
        - 用户完成选择后,关闭可视化窗口。
5. 获取和返回用户选择的点的索引列表

1.2应用

1.数据验证:
        在点云处理和分析过程中,可以使用此方法验证点云数据的正确性和精度。
2.特征提取:
        可以用来查看和提取点云中感兴趣的特征点的坐标,辅助后续的点云分析和处理。
3.调试和调优:
        在点云算法开发和调试过程中,可以实时查看和调整选中的点云数据,优化算法效果。

二、代码实现

2.1关键函数

        定义一个名为 pick_points 的函数,该函数允许用户在Open3D的可视化窗口中选择点云中的点。在可视化窗口中shift+鼠标左键就可以选取点

def pick_points(cloud):
    """
    允许用户在Open3D可视化窗口中选择点云中的点。

    参数:
    cloud (open3d.geometry.PointCloud): 输入点云。

    返回:
    list: 用户选择的点的索引列表。
    """
    print("   Press [shift + right click] to undo point picking")
    print(" After picking points, press 'Q' to close the window")

    # 创建带有编辑功能的可视化工具
    vis = o3d.visualization.VisualizerWithEditing()
    vis.create_window(window_name='Point Cloud Picker', width=800, height=800, left=50, top=50, visible=True)
    vis.add_geometry(cloud)

    # 运行可视化工具,让用户选择点
    vis.run()

    # 销毁可视化窗口
    vis.destroy_window()

    # 返回用户选择的点的索引列表
    return vis.get_picked_points()

2.2完整代码

import open3d as o3d


def pick_points(cloud):
    """
    允许用户在Open3D可视化窗口中选择点云中的点。

    参数:
    cloud (open3d.geometry.PointCloud): 输入点云。

    返回:
    list: 用户选择的点的索引列表。
    """
    print("   Press [shift + right click] to undo point picking")
    print(" After picking points, press 'Q' to close the window")

    # 创建带有编辑功能的可视化工具
    vis = o3d.visualization.VisualizerWithEditing()
    vis.create_window(window_name='Point Cloud Picker', width=800, height=800, left=50, top=50, visible=True)
    vis.add_geometry(cloud)

    # 运行可视化工具,让用户选择点
    vis.run()

    # 销毁可视化窗口
    vis.destroy_window()

    # 返回用户选择的点的索引列表
    return vis.get_picked_points()


if __name__ == "__main__":
    # 读取点云数据
    pcd = o3d.io.read_point_cloud(r"E:\work\Open3D\open3d20231128\Blog_Cloud\cloud_data\bunny.pcd")

    # 调用函数,允许用户选择点
    picked_indices = pick_points(pcd)

    # 输出选择的点的索引
    print(f"Picked points indices: {picked_indices}")

三、实现效果

3.1选取点

3.2数据显示

ress [shift + right click] to undo point picking
 After picking points, press 'Q' to close the window
[Open3D INFO] Picked point #20821 (-0.037, 0.099, -0.022) to add in queue.
[Open3D INFO] Picked point #4720 (-0.035, 0.09, 0.044) to add in queue.
[Open3D INFO] Picked point #4304 (-0.05, 0.086, 0.046) to add in queue.
[Open3D INFO] Picked point #2294 (-0.034, 0.065, 0.04) to add in queue.
[Open3D INFO] Picked point #18682 (-0.022, 0.055, 0.044) to add in queue.
[Open3D INFO] Picked point #1247 (0.0075, 0.053, 0.052) to add in queue.
[Open3D INFO] Picked point #10047 (0.017, 0.078, 0.053) to add in queue.
[Open3D INFO] Picked point #6380 (0.024, 0.11, 0.039) to add in queue.
[Open3D INFO] Picked point #11096 (0.011, 0.12, 0.036) to add in queue.

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值