ply 点云文件格式

英文版 ply格式 http://paulbourke.net/dataformats/ply/

典型的   PLY   文件结构: 
头部 
顶点列表 
面片列表 
(其他元素列表)

头部是一系列以回车结尾的文本行,用来描述文件的剩余部分。头部包含一个对每个元素类型的描述,包括元素名(如“边”),这个元素在工程里有多少,以及一个与这个元素关联的不同属性的列表。头部还说明这个文件是二进制的或者是ASCII的。头部后面的是一个每个元素类型的元素列表,按照在头部中描述的顺序出现。 

下面是一个立方体的完整ASCII描述。相同工程的二进制版本头部的唯一不同是用词“binary_little_endian”或者   “binary_big_endian”替换词“ascii”。大括号中的注释不是文件的一部分,它们是这个例子的注解。文件中的注释一般在   “comment”开始的关键词定义行里。 

element   <元素名>   <在文件中的个数> 
property   <数据类型>   <属性名-1> 
property   <数据类型>   <属性名-2> 
property   <数据类型>   <属性名-3> 

name        type        number of bytes
---------------------------------------
char       character                 1
uchar      unsigned character        1
short      short integer             2
ushort     unsigned short integer    2
int        integer                   4
uint       unsigned integer          4
float      single-precision float    4
double     double-precision float    8
property   list   <数值类型>   <数值类型>   <属性名> 

这表示属性“vertex_index”首先包含一个非负字符报苏在属性里包含多少索引,接下来是一个列表包含许多整数。在这个边长列表里的每个整数都是一个顶点的索引。

实例:

ply
format ascii 1.0
comment author: Greg Turk
comment object: another cube
element vertex 8
property float x
property float y
property float z
property uchar red                   { start of vertex color }
property uchar green
property uchar blue
element face 7
property list uchar int vertex_index  { number of vertices for each face }
element edge 5                        { five edges in object }
property int vertex1                  { index to first vertex of edge }
property int vertex2                  { index to second vertex }
property uchar red                    { start of edge color }
property uchar green
property uchar blue
end_header
0 0 0 255 0 0                         { start of vertex list }
0 0 1 255 0 0
0 1 1 255 0 0
0 1 0 255 0 0
1 0 0 0 0 255
1 0 1 0 0 255
1 1 1 0 0 255
1 1 0 0 0 255
3 0 1 2                           { start of face list, begin with a triangle }
3 0 2 3                           { another triangle }
4 7 6 5 4                         { now some quadrilaterals }
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
0 1 255 255 255                   { start of edge list, begin with white edge }
1 2 255 255 255
2 3 255 255 255
3 0 255 255 255
2 0 0 0 0                         { end with a single black line } 


转自:http://blog.youkuaiyun.com/lxfyzx/article/details/4997627

http://blog.youkuaiyun.com/lxfyzx/article/details/4997780


### PLY点云文件格式说明及处理方法 #### 文件格式概述 PLY(Polygon File Format)是一种用于存储三维几何模型和点云数据的通用文件格式。这种格式由斯坦福大学计算机科学系的研究人员 Greg Turk 和 Marc Levoy 在1994年开发[^2]。其设计目标是提供一种简单、灵活且易于解析的方式,以便于存储和交换三维数据。 PLY文件通常分为两部分:头部和主体。头部包含了关于点云的数据结构定义以及元信息,例如顶点数量、面的数量以及其他自定义属性;主体则具体存储了这些数据的实际数值。以下是PLY文件的基本组成部分: - **头部** - 描述文件格式版本号(ASCII或二进制) - 列出点云中的元素及其对应的属性名称和类型 - 提供其他必要的元信息 - **主体** - 存储实际的点云数据,按照头部所定义的顺序排列 对于学习者而言,可以通过参考相关文档进一步了解PLY格式的具体细节[^3]。 --- #### Python中处理PLY点云文件的方法 在Python环境中,有多种库可用于读取和操作PLY格式的点云数据。其中最常用的是 `open3d` 和 `pyntcloud` 库。如果需要处理复杂的字段或多维特征,则推荐使用后者[^4]。 ##### 安装所需库 安装所需的第三方库非常简便,可通过pip命令完成: ```bash pip install open3d pyntcloud numpy ``` ##### 使用Open3D读取PLY文件 以下是一个简单的代码示例,展示如何利用 Open3D 来加载并可视化一个PLY点云文件: ```python import open3d as o3d # 加载PLY文件 point_cloud = o3d.io.read_point_cloud("example.ply") # 可视化点云 o3d.visualization.draw_geometries([point_cloud]) ``` 上述代码片段展示了基本的操作流程,即先调用函数读入文件,再将其传递给绘图接口显示出来。 ##### 使用PyntCloud读取复杂PLY文件 当面对具有更多维度或者特殊字段需求的情况时,可以选择 PyntCloud 进行更深入的数据挖掘工作。下面给出一段示范程序来演示这一过程: ```python from pyntcloud import PyntCloud # 导入PLY文件到DataFrame对象 cloud = PyntCloud.from_file("complex_example.ply") # 查看前几行记录确认导入成功与否 print(cloud.points.head()) # 如果想保存修改后的结果回磁盘上存成新的PLY文件的话也可以这样做 cloud.to_file("output.ply", also_save=["mesh"]) ``` 此脚本不仅能够轻松获取原始数据表单形式表示,还允许用户方便地对其进行各种变换后再导出更新版副本。 --- #### 注意事项 需要注意的一点是,所提供的样例文件仅限于教育目的和个人研究之用,不得擅自挪作他途[^1]。另外,在尝试不同软件工具之前最好查阅官方手册以熟悉各自功能特点差异所在。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值