我需要在 Python 中读取、操作和编写 PLY 文件。PLY是一种用于存储 3D 对象的格式。通过简单的搜索,我找到了两个相关的库PyMesh和plyfile。有没有人对他们有任何经验,有没有人有任何建议?plyfile
从 Github 来看,似乎已经休眠了一年。
我知道这个问题会引发基于意见的答案,但我真的不知道在哪里可以问这个问题。
截至(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)
参考:
我在plyfile
使用点云时成功使用过。
该项目确实很长时间没有任何活动,但它达到了它的目的。
并且不像解析 ply 文件的事实允许您通过添加新功能来重新创建自己。
另一方面PyMesh
,除了解析 ply 文件之外,它还为您提供许多其他功能。
所以也许问题是:
您是只想“读取、操作和编写 PLY 文件”,还是在寻找提供更多额外功能的库?
让我选择plyfile
的是,我只需复制 1 个源文件就可以将其合并到我的项目中。此外,我对 PyMesh 提供的任何其他功能都不感兴趣。
我结束了编写自己的函数来读/写 ply 文件(支持 ascii 和二进制),因为我发现 plyfile 源代码有点乱。
如果有人感兴趣,这里是文件的链接: ply reader/writer
我刚刚更新了 meshio以支持 PLY,旁边还有大约 20 种其他格式。安装
pip install meshio
并在命令行上使用
meshio convert in.ply out.vtk
或来自 Python 之类的
import meshio
mesh = meshio.read("in.ply")
# mesh.points, mesh.cells, ...
我推出了自己的 ascii ply writer(因为它很简单,我不想依赖)。后来,我很懒,依赖 plyfile 来加载来自其他地方的二进制 .ply 文件。还没有什么着火的。
值得一提的是,无论好坏,.ply 格式都是可扩展的。我们将自定义数据硬塞到其中,这很容易,因为我们还编写了自己的作家。