本文主要介绍两种读取点云和网格的方法,一种是通过open3d读取,另一种是通过pyntcloud读取,最后通过open3d进行可视化。第三种是通过pyvista读取再可视化。
Open3D
官方文档,版本:0.13.0,安装命令:
pip install open3d
1.常见点云
import open3d as o3d
import numpy as np
ply_path = './gt-11.ply'
# 通过open3d直接读取点云
pcd = o3d.io.read_point_cloud(ply_path)
# 查看点云具体数值
pcd_value = np.asarray(pcd.points)
print(pcd_value)
# 转成三维向量
pcd_vector = o3d.geometry.PointCloud()
pcd_vector.points = o3d.utility.Vector3dVector(pcd.points)
# 手动绘制颜色
# pcd.paint_uniform_color([1, 0.706, 0])
pcd_vector.paint_uniform_color([1, 0.706, 0])
# 三维模型的坐标中心
# origin = pcd.get_center()
origin = pcd_vector.get_center()
# 坐标系
coordinate = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.2, origin=origin - 0.5)
# 可视化
o3d.visualization.draw_geometries([pcd])
o3d.visualization.draw_geometries([pcd_vector, coordinate])
# 保存
o3d.io.write_point_cloud('human.pcd', pcd)
读取
open3d.io.read_point_cloud(filename, format='auto', remove_nan_points=True, remove_infinite_points=True, print_progress=False)
Open3D通过open3d.io.read_point_cloud()方法读取点云。参数如下:
filename( str ) – 文件路径。
format ( str , optional , default='auto' ) – 输入文件的格式。如果未指定或设置为
auto,则从文件扩展名推断格式。remove_nan_points ( bool , optional , default=True ) – 如果为真,所有包含 NaN 的点将从 PointCloud 中删除。
remove_infinite_points ( bool , optional , default=True ) – 如果为 true,则所有包含无限值的点都将从 PointCloud 中删除。
print_progress ( bool , optional , default=False ) – 如果设置为 true,则在控制台中显示进度条
除了默认参数‘auto’,format还支持以下格式:
| 格式 |
描述 |
|---|---|
|
|
每一行包含 |
|
|

本文详细介绍了使用Open3D读取点云和网格的方法,包括PLY和TXT格式,以及如何通过PyntCloud和PyVista进行操作。讲解了如何可视化、转换和保存这些数据,并展示了不同工具之间的比较和应用实例。
1094

被折叠的 条评论
为什么被折叠?



