【发布时间】:2018-11-30 14:49:00
【问题描述】:
我有一个包含 3D 点云的 .PLY 文件:我想绘制它并在 Python 中可视化它。 .PLY 文件只包含顶点而不包含面。
能否告诉我一个用于绘制 3D 点云的简单 Python 库?
重要的是要注意我对绘制网格不感兴趣,而只是绘制点云。
【问题讨论】:
标签: python 3d point-cloud-library point-clouds ply
我有一个包含 3D 点云的 .PLY 文件:我想绘制它并在 Python 中可视化它。 .PLY 文件只包含顶点而不包含面。
能否告诉我一个用于绘制 3D 点云的简单 Python 库?
重要的是要注意我对绘制网格不感兴趣,而只是绘制点云。
【问题讨论】:
标签: python 3d point-cloud-library point-clouds ply
您可以使用具有 python 绑定的 vtk 来只是显示。 Code snippet
如果你想用 numpy 等处理你的数据,我推荐以下步骤:
pcl_ply2pcd input.ply output.pcd -format 0
如果你想留在 pcl 世界,有一个 python-pcl 模块包含到库的绑定。
如果其中一个符合您的需要,我可以进一步详细说明。
【讨论】:
您可以使用 https://github.com/daavoo/pyntcloud 在 Jupyter 笔记本中可视化 PLY:
from pyntcloud import PyntCloud
human_face = PyntCloud.from_file("human_face.ply")
human_face.plot()
【讨论】:
对于任何想了解简单方法以在 Python 中读取和显示 PLY 点云的人,我会回答我自己的问题,报告我发现的最佳解决方案我的情况。
打开 cmd 并输入:
pip install open3d
这将在您的计算机上安装 Open3D,然后您只需执行以下示例脚本即可读取和显示您的 PLY 点云:
import numpy as np
from open3d import *
def main():
cloud = read_point_cloud("cloud.ply") # Read the point cloud
draw_geometries([cloud]) # Visualize the point cloud
if __name__ == "__main__":
main()
【讨论】:
conda install -c open3d-admin open3d
试试pptk(点处理工具包)。该软件包有一个 3-d 点云查看器,它直接将 3 列 numpy 数组作为输入,并且能够以交互方式可视化 10-1 亿个点。 (它通过使用八叉树来剔除视锥外的点并将远处的点组近似为单个点,从而减少了每帧中需要渲染的点数)
要安装,
>> pip install pptk
要在 Python 中可视化 100 个随机生成的点,
>> import pptk
>> import numpy as np
>> P = np.random.rand(100,3)
>> v = pptk.viewer(P)
screenshot of pptk viewer visualizing 100 random points
文档网站还有一个tutorial,专门用于可视化从 .ply 文件加载的点云。
【讨论】:
X 的列表中,这样的工作是否可行:for x in X: v = pptk.viewer(x); v.wait(); v.close()?不幸的是,这会在新查看器中打开每个点云。要在同一个查看器中加载新的点云,您需要使用 viewer.load,目前似乎有问题:(