Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pythonplyfile与pymesh_Python_Ply File Format - Fatal编程技术网

pythonplyfile与pymesh

pythonplyfile与pymesh,python,ply-file-format,Python,Ply File Format,我需要用Python读取、操作和编写PLY文件。是一种用于存储三维对象的格式。通过简单的搜索,我找到了两个相关的库,以及。有没有人对其中任何一种都有经验,有没有人有什么建议plyfile似乎已经休眠了一年 我知道这个问题激发了基于观点的答案,但我真的不知道还有什么地方可以问这个问题。我在处理点云时成功地使用了plyfile 诚然,该项目很久以来没有出现任何活动,但它满足了它的目的 这与解析ply文件不同,ply文件允许您通过添加新功能来重新创建自己 另一方面,PyMesh除了解析ply文件之外,

我需要用Python读取、操作和编写PLY文件。是一种用于存储三维对象的格式。通过简单的搜索,我找到了两个相关的库,以及。有没有人对其中任何一种都有经验,有没有人有什么建议<根据Github的判断,code>plyfile似乎已经休眠了一年


我知道这个问题激发了基于观点的答案,但我真的不知道还有什么地方可以问这个问题。

我在处理点云时成功地使用了
plyfile

诚然,该项目很久以来没有出现任何活动,但它满足了它的目的

这与解析ply文件不同,ply文件允许您通过添加新功能来重新创建自己

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

所以问题可能是:

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

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


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

如果有人感兴趣,请点击以下链接:

我刚刚更新了PLY,支持其他20种格式。安装

pip3 install meshio --user
并在命令行上使用

meshio-convert in.ply out.vtk
或者从类似Python的内部

导入meshio
网格=网格读数(“in.ply”)
#mesh.points、mesh.cells等。。。

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

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

截至(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) 
参考资料:


您的阅读速度快了3倍(更不用说将数据直接放入熊猫的数据框了,这非常方便),感谢您的分享!浏览一下你的代码;值得注意的是,您不支持写入颜色。@AndrewAgner它实际上支持写入颜色、法线和其他标量字段。甚至还有一个测试:@davidelaiglesia您的代码很棒,但有一个小文档出错;在write_ply函数的docstring中,您提到points&mesh应该是ndarray对象,而实际上您希望使用DataFrame。我现在使用了
plyfile
和Open3D。
plyfile
的优点在于它非常轻量级。我认为Open3D不适合作为我所问问题的答案,因为它的重量非常重,而且不仅仅是读写PLY文件。我还使用Open3D做了很多其他的事情,我完全推荐任何人反对它。它的文档不是很好,只是使用起来很笨拙。将第5行和第7行更新为:
o3d.io.read\u point\u cloud(输入文件)
o3d.visualization.draw\u geometry([pcd])