1. 读取并可视化点云

任务目标

本案例将使用Open3D读取一个PLY格式的点云文件,并在可视化窗口中显示点云的基本形状与颜色。通过本案例,你将掌握Open3D点云IO与可视化的最小闭环流程。

环境依赖

  • Python 3.8+
  • Open3D库:pip install open3d
  • 示例数据:使用Open3D自带的示例PLY文件(fragment.ply),无需额外下载

完整代码

import open3d as o3d

# 读取点云文件(使用Open3D内置示例数据)
ply_path = "fragment.ply"
point_cloud = o3d.io.read_point_cloud(ply_path)

# 检查点云是否读取成功
if point_cloud.is_empty():
    print("错误:点云文件为空或读取失败,请检查文件路径。")
else:
    print(f"成功读取点云,包含 {len(point_cloud.points)} 个点")

    # 打印点云的基本信息
    print("点云包围盒范围:", point_cloud.get_axis_aligned_bounding_box())
    print("点云是否有颜色:", point_cloud.has_colors())

    # 可视化点云
    o3d.visualization.draw_geometries([point_cloud],
                                      window_name="Open3D 点云可视化",
                                      width=800, height=600)

运行方式

  1. 将上述代码保存为 read_visualize_pointcloud.py。
  2. 在终端中运行:python read_visualize_pointcloud.py。
  3. 确保当前工作目录下存在 fragment.ply 文件(Open3D示例数据通常位于Open3D安装目录的 examples/test_data/ 下,若不在当前目录,请将 ply_path 改为该文件的路径)。

验证方法

  • 控制台输出:程序应打印点云的点数(通常为约5万点)、包围盒范围以及是否有颜色信息。
  • 可视化窗口:运行后应弹出一个窗口,显示三维点云形状。若点云包含颜色,点会呈现彩色;否则为灰色。可通过鼠标拖拽旋转视角,滚轮缩放,确认点云的三维结构清晰可见。
  • 通过条件:窗口正常打开且点云渲染无报错,即视为案例通过。

常见问题

  • 文件找不到:若提示文件不存在,请将 ply_path 替换为Open3D安装目录下 examples/test_data/fragment.ply 的完整路径,或使用自己的PLY文件路径。
  • 窗口闪退:确保在脚本末尾调用 draw_geometries 后没有立即退出;该函数会阻塞直到窗口关闭。