13

我需要在 Python 中读取、操作和编写 PLY 文件。PLY是一种用于存储 3D 对象的格式。通过简单的搜索,我找到了两个相关的库PyMeshplyfile。有没有人对他们有任何经验,有没有人有任何建议?plyfile从 Github 来看,似乎已经休眠了一年。

我知道这个问题会引发基于意见的答案,但我真的不知道在哪里可以问这个问题。

4

4 回答 4

11

截至(2020 年 1 月)。

无,使用 open3d。这是最简单的,可以将 .ply 文件直接读取到 numpy 中。

import numpy as np
import open3d as o3d

# Read .ply file
input_file = "input.ply"
pcd = o3d.io.read_point_cloud(input_file) # Read the point cloud

# Visualize the point cloud within open3d
o3d.visualization.draw_geometries([pcd]) 

# Convert open3d format to numpy array
# Here, you have the point cloud in numpy format. 
point_cloud_in_numpy = np.asarray(pcd.points) 

参考:

于 2020-01-28T14:59:14.370 回答
10

我在plyfile使用点云时成功使用过。

该项目确实很长时间没有任何活动,但它达到了它的目的。

并且不像解析 ply 文件的事实允许您通过添加新功能来重新创建自己。

另一方面PyMesh,除了解析 ply 文件之外,它还为您提供许多其他功能。

所以也许问题是:

您是只想“读取、操作和编写 PLY 文件”,还是在寻找提供更多额外功能的库?

让我选择plyfile的是,我只需复制 1 个源文件就可以将其合并到我的项目中。此外,我对 PyMesh 提供的任何其他功能都不感兴趣。


更新

我结束了编写自己的函数来读/写 ply 文件(支持 ascii 和二进制),因为我发现 plyfile 源代码有点乱。

如果有人感兴趣,这里是文件的链接: ply reader/writer

于 2016-04-28T18:34:27.340 回答
3

我刚刚更新了 meshio以支持 PLY,旁边还有大约 20 种其他格式。安装

pip install meshio

并在命令行上使用

meshio convert in.ply out.vtk

或来自 Python 之类的

import meshio

mesh = meshio.read("in.ply")
# mesh.points, mesh.cells, ...
于 2019-10-19T12:13:38.920 回答
0

我推出了自己的 ascii ply writer(因为它很简单,我不想依赖)。后来,我很懒,依赖 plyfile 来加载来自其他地方的二进制 .ply 文件。还没有什么着火的。

值得一提的是,无论好坏,.ply 格式都是可扩展的。我们将自定义数据硬塞到其中,这很容易,因为我们还编写了自己的作家。

于 2019-10-25T14:52:40.637 回答