一、PCD简介

1.1 PCD版本

在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本。这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5、PCD_V6和PCD_V7等),分别代表PCD文件的0.5版、0.6版和0.7版。在PCL中,用到的PCD文件格式的正式发布是0.7版,即PCD_V7。

1.2 头文件格式

PCD文由 “头文件 + 点云数据”构成,头文件声明了该点云数据集的基本特性。下面以PCD_V7版本的PCD文件为例,对头文件进行介绍。打开经典的兔子模型(用记事本就能打开),头文件及部分点云数据如下所示:

# .PCD v0.7 - Point Cloud Data file format

VERSION 0.7

FIELDS x y z

SIZE 4 4 4

TYPE F F F

COUNT 1 1 1

WIDTH 35947

HEIGHT 1

VIEWPOINT 0 0 0 1 0 0 0

POINTS 35947

DATA ascii

-1.10698 3.272394 -0.447241

-1.80195 3.367094 -0.704211

-4.12496 5.602794 2.824819

1.2.1 VERSION

指定PCD文件的版本,由0.7可知该点云数据集是0.7版本的。

VERSION 0.7 //PCD版本号为0.7版

1.2.2 FIELDS

指定本点云数据集中任意一个点可以有的维度信息和其他附加信息。如:FIELDS x y z  指每个点都有xyz三个维度信息,FIELDS x y z rgb 指每个点除了xyz维度信息外还有颜色信息等。

FIELDS x y z //该数据集中包含每一个点的xyz纬度信息

1.2.3 SIZE

储存每个维度信息占用的字节数(byte)。1指用char型数据存储维度信息,2指用short型数据存储维度信息,4指用int或float型数据存储维度信息,8指用double型数据存储维度信息。

SIZE 4 4 4 //x y z每个维度均占用4个字节

1.2.4 TYPE

用字符指定每一个维度的数据类型。I表示有符号类型:int8(char),int16(short),int32(int);U表示无符号类型:uint8(unsigned char),uint 16(unsigned short),uint32(unsigned int);F表示浮点型float和double。

TYPE F F F //x y z每个维度的均为4字节的浮点型,即为float

1.2.5 COUNT

每个维度包含的元素个数。

COUNT 1 1 1 //x y z每个维度均包含1个元素

1.2.6 WIDTH

点云数据集可分为有序数据集和无序数据集两种。有序数据集类似矩阵,有行列之分,无序数据集则无行列之分。根据数据集是否有序,WIDTH由不同的含义。

对有序数据集而言:表示数据集的宽度(每行点的数目);

对于无序数据集而言:表示数据集中点的总数(和下面的POINTS一样)。

1.2.7 HEIGHT

对有序数据集而言:表示数据集的高度(行数);

对于无序数据集而言:被设置为1,用于声明一个数据集是否有序。

//该数据集为无序数据集,共有35947个点

WIDTH 35947

HEIGHT 1

1.2.8 VIEWPOINTS

数据集中点云的获取视点。视点信息被指定为“平移(txtytz) + 四元数(qwqxqyqz)”,默认值是:VIEWPOINT 0 0 0 1 0 0 0

VIEWPOINT 0 0 0 1 0 0 0 //数据集的获取视点

1.2.9 POINTS

点云中点的总数,从0.7版本就开始显得有点多余,可能会在后续版本中舍去这个参数。

POINTS 35947 //该数据集中共有35947个点

1.2.10 DATA

指定存储点云数据的数据存储格式:ASCLL码或二进制数据。

DATA ascii //该数据集用ASCLL码存储数据

1.3 点云数据

以ASCLL码存储的点云数据,每一个点占据一行,“nan”表示不存在或非法的数据。

-1.10698 3.272394 -0.447241

-1.80195 3.367094 -0.704211

-4.12496 5.602794 2.824819

......

二、PCD文件在PCL下的读取

#include

#include

#include

int main()

{

pcl::PointCloud<:pointxyz>::Ptr cloud(new pcl::PointCloud<:pointxyz>);//创建点云指针

if(pcl::io::loadPCDFile<:pointxyz>("rabbit.pcd", *cloud )== -1)//读入PCD格式文件,如果文件不存在,返回-1

{

PCL_ERROR("Couldn't read file rabbit.pcd\n");

return -1;

}

std::cout << "Loaded"

<< cloud->points.size()

<< "data points from rabbit.pcd with the following fields: "

<< std::endl;

//for (size_t i = 0; i < cloud->points.size(); i++) 显示所有的点

//显示前5个点

for (size_t i = 0; i < 5; i++)

{

std::cout << " " << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << std::endl;

}

system("pause");

return 0;

}

linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件相关推荐

  1. PCD文件格式详解及在PCL下读取PCD文件

    一.PCD简介 1.1 PCD版本 在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本.这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5.PCD_V6和PCD_V7等),分 ...

  2. S19文件格式详解(总结)以及与hex文件的互转

    S19文件格式详解 ​​ ​​ S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motoro ...

  3. 7.Linux文本查看(cat more head tail)详解

    文章目录 前言 一.cat详解 二.more详解 三.head详解 四.less详解 五.tail命令详解 总结 友情链接 前言 本小节会详细讲解如何查看文件,及简单的处理文本:涉及到的命令包括cat ...

  4. load python txt文件_详解Python中numpy.loadtxt()读取txt文件

    为了方便使用和记忆,有时候我们会把 numpy.loadtxt() 缩写成np.loadtxt() ,本篇文章主要讲解用它来读取txt文件. 读取txt文件我们通常使用 numpy 中的 loadtx ...

  5. java web文件上传详解_java web图片上传和文件上传实例详解

    java web图片上传和文件上传 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定 ...

  6. linux命令查看时间属于哪个地区,详解Linux下用date命令查看和计算包含时区的时间戳...

    在Linux中 1.执行date命令,可以查看当前的时间: 2014年 09月 03日 星期三 10:29:00 CST 其中CST是中国标准时间(China Standard Time)的缩写 2. ...

  7. 关于Maven中pom文件标签的详解,分别对比父工程pom文件与子工程pom文件。

    一.介绍 这里我们以若依开源框架为例,我们先讲解,父工程pom文件,之后再讲解子工程pom文件. 首先,我们先介绍若依前后端分离项目的目录结构; 一.父工程pom.文件 父工程pom文件注释:(每个标 ...

  8. linux只输入wc命令,Linux系统中wc命令的用法详解

    在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...

  9. linux zcat 使用方法,Linux系统中zcat命令的知识详解

    Linux系统中的zcat命令不同于cat命令,它不用解压缩文件就能显示压缩包文件的内容,那么下面由学习啦小编为大家整理了linux系统中zcat命令的知识详解,希望对大家有帮助! Linux系统中z ...

  10. 【Postman知识分享】Postman测试下载文件和上传文件(图文详解)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

最新文章

  1. Java常用类之【日期相关类】
  2. 生成随机长度字符串,比如密码等
  3. 集成SpringSecurity---SpringBoot
  4. linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析!
  5. 关于Intel IPP的基本使用方法——参照可设置ipl库
  6. 设计师交流社区,在集设原创作品通过交流发现问题,不断进步!
  7. iPhone NavigationBar和UIToolbar基础
  8. 算法刷题指南,来自GitHub 68.8k star的硬核算法教程
  9. IOS网络——检测网络状态:Reachability
  10. 绿色版DNF(地下城勇士)全键盘连发工具,支持DNF双开
  11. HTML和Jsp 页面使用 shiro标签备忘录
  12. Linux系统面试常问问题,最常见的Linux面试题集锦
  13. rollup 开发vue组件库及umd SDK 问题总结
  14. (声明)“天外野草”为本人今后的笔名以及网名
  15. 数字温湿度传感器DHT11
  16. python3 pymysql库介绍
  17. C#调用usb摄像头的实现方法
  18. 彻底关闭Windows10更新!!
  19. 复盘:智能座舱系列文六- 它的3种交互方式之显式交互(语音以及显示)
  20. 玩机搞机---关于安卓机型工厂固件 刷机 端口解密 解bl锁 写串 nv损坏 等相关常识

热门文章

  1. 大野耐一的十条管理训诫|优思学院
  2. 计算机基础:13、计算机CPU--运算器
  3. MATLAB实现的车牌定位系统
  4. 如何手动释放Python的内存
  5. html制作古诗念奴娇,《念奴娇·赤壁怀古》的教学设计
  6. 2021年最新互联网大厂中秋礼盒PK!
  7. 利用EXCEL将中文汉字转为拼音
  8. 组合测试法是什么 软件测试,组合测试模型方法
  9. 汕尾话专用专注微信聊天表情GIF图片
  10. 数字电路为什么是低电平有效的多