目录
一、概述
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 o3ddef 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 pickingAfter 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.