本文聚焦于 Open3D 这一强大的工具,深入探讨其在可视化领域的应用。从 Open3D 的基本概念入手,阐述它如何为三维数据的展示提供高效、便捷的途径。涵盖了 Open3D 可视化功能的核心要点,包括点云、网格模型等多种三维数据类型的可视化方法,展示其在呈现复杂三维场景和数据结构方面的独特优势,帮助读者了解如何利用 Open3D 创建生动、直观的三维可视化效果,无论是在科研、工程还是其他相关领域的应用场景中。
1. 点云可视化
函数o3d.visualization
import open3d as o3d
pcd = o3d.io.read_point_cloud("test_data/fragment.pcd") # 读取pcd文件
print(pcd) #只是简单的打印信息:PointCloud with 113662 points.
#显示,zoom等信息是一些可选项
o3d.visualization.draw_geometries([pcd])
# 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])
# 在同级目录下写入 copy_of_fragment.pcd文件
o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)
2. 点云投影到固定视角
import open3d as o3d
import numpy as np
# 设置视角
vis = o3d.visualization.Visualizer()
vis.create_window(visible=False)
vis.add_geometry(pcd)
rotation = pose_world_body[:3, :3]
position = pose_world_body[:3, 3]
up = np.array([0, 0, 1])
front = np.array([-1, 0, 0])
ctr = vis.get_view_control()
ctr.set_lookat(position)
ctr.set_up(up @ rotation.T)
ctr.set_front(front @ rotation.T)
ctr.set_zoom(0.02) # 缩放值
vis.capture_screen_image(output_file_path, True)
vis.destroy_window()