代码实现
将 .obj
文件转换为 .pcd
(点云数据) 代码文件。
import open3d as o3d
# 加载 .obj 文件
mesh = o3d.io.read_triangle_mesh("bunny.obj")
# 检查是否成功加载
if not mesh.has_vertices():
print("无法加载 .obj 文件,请检查文件路径")
exit()
# 提取顶点作为点云
point_cloud = o3d.geometry.PointCloud()
point_cloud.points = mesh.vertices
# 保存为 .pcd 文件
o3d.io.write_point_cloud("bunny.pcd", point_cloud, write_ascii=True)
print("点云已保存为 bunny.pcd")
从 .obj
文件的表面生成更密集的点云(不仅仅是顶点),可以使用 sample_points_poisson_disk
方法。
import open3d as o3d
# 读取.obj文件
mesh = o3d.io.read_triangle_mesh("bunny.obj")
# 从网格中提取点云
point_cloud = mesh.sample_points_poisson_disk(number_of_points=10000)
# 保存为.pcd文件
o3d.io.write_point_cloud("bunny.pcd", point_cloud, write_ascii=True)
print("转换完成,文件已保存为 bunny.pcd")
点云可视化
使用 Open3D 可视化生成的点云文件
import open3d as o3d
# 从文件加载点云
points = o3d.io.read_point_cloud("bunny.pcd")
# 创建 Visualizer 对象
vis = o3d.visualization.Visualizer()
# 设置窗口宽度和高度
window_width = 1200 # 设置窗口宽度
window_height = 800 # 设置窗口高度
# 创建窗口
vis.create_window(width=window_width, height=window_height)
# 添加点云到可视化窗口
vis.add_geometry(points)
# 运行可视化
vis.run()
运行效果