我需要在Python中阅读,操作和编写PLY文件。 PLY是用于存储3D对象的格式。通过简单的搜索,我找到了两个相关的库,PyMesh和plyfile。有没有人对他们中的任何一个有任何经验,有没有人有任何建议?根据Github的判断,plyfile
似乎已经休眠了一年。
我知道这个问题会引发基于意见的答案,但我真的不知道在哪里提出这个问题。
答案 0 :(得分:5)
截至(2020年1月)。
没有,请使用open3d。这是最简单的方法,可以将.ply文件直接读取到numpy中。
import numpy as np
import open3d as o3d
# Read .ply file
input_file = "input.ply"
pcd = o3d.read_point_cloud(input_file) # Read the point cloud
# Visualize the point cloud within open3d
o3d.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)
参考:
答案 1 :(得分:4)
我在使用pointclouds时成功使用了plyfile
。
确实,该项目长期没有提供任何活动,但它符合其目的。
并不是解析一个ply文件的事实,它允许你通过添加新功能来重新创建自己。
另一方面,除了解析ply文件之外,PyMesh
还提供了许多其他功能。
所以问题可能是:
您是否想要阅读,操作和编写PLY文件'或者您正在寻找一个提供更多额外功能的库?
让我选择plyfile
的原因是,我只需要复制1个源文件即可将其合并到我的项目中。此外,我对PyMesh提供的任何其他功能都不感兴趣。
我结束编写自己的函数来读/写ply文件(支持ascii和binary)因为我发现plyfile源代码有点乱。
如果有人有兴趣,这里有一个指向该文件的链接: ply reader/writer
答案 2 :(得分:1)
我刚刚更新了meshio,使其也支持PLY,仅次于其他20种格式。使用
安装pip3 install meshio --user
并在命令行中使用
meshio-convert in.ply out.vtk
或在Python之内,例如
import meshio
mesh = meshio.read("in.ply")
# mesh.points, mesh.cells, ...
答案 3 :(得分:0)
我滚动了我自己的ascii层作家(因为它很简单,所以我不想依赖)。后来,我很懒惰,并且依赖plyfile来加载来自其他地方的二进制.ply文件。还没有什么着火的。
值得一提的是,.ply格式可以扩展,无论是好是坏。我们将定制数据塞入了其中,这很容易,因为我们还编写了自己的作家。