OBJ文件生成PCD文件(python 实现)

代码实现

将 .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()

运行效果