linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件
一、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文件相关推荐
- PCD文件格式详解及在PCL下读取PCD文件
一.PCD简介 1.1 PCD版本 在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本.这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5.PCD_V6和PCD_V7等),分 ...
- S19文件格式详解(总结)以及与hex文件的互转
S19文件格式详解 S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motoro ...
- 7.Linux文本查看(cat more head tail)详解
文章目录 前言 一.cat详解 二.more详解 三.head详解 四.less详解 五.tail命令详解 总结 友情链接 前言 本小节会详细讲解如何查看文件,及简单的处理文本:涉及到的命令包括cat ...
- load python txt文件_详解Python中numpy.loadtxt()读取txt文件
为了方便使用和记忆,有时候我们会把 numpy.loadtxt() 缩写成np.loadtxt() ,本篇文章主要讲解用它来读取txt文件. 读取txt文件我们通常使用 numpy 中的 loadtx ...
- java web文件上传详解_java web图片上传和文件上传实例详解
java web图片上传和文件上传 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定 ...
- linux命令查看时间属于哪个地区,详解Linux下用date命令查看和计算包含时区的时间戳...
在Linux中 1.执行date命令,可以查看当前的时间: 2014年 09月 03日 星期三 10:29:00 CST 其中CST是中国标准时间(China Standard Time)的缩写 2. ...
- 关于Maven中pom文件标签的详解,分别对比父工程pom文件与子工程pom文件。
一.介绍 这里我们以若依开源框架为例,我们先讲解,父工程pom文件,之后再讲解子工程pom文件. 首先,我们先介绍若依前后端分离项目的目录结构; 一.父工程pom.文件 父工程pom文件注释:(每个标 ...
- linux只输入wc命令,Linux系统中wc命令的用法详解
在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...
- linux zcat 使用方法,Linux系统中zcat命令的知识详解
Linux系统中的zcat命令不同于cat命令,它不用解压缩文件就能显示压缩包文件的内容,那么下面由学习啦小编为大家整理了linux系统中zcat命令的知识详解,希望对大家有帮助! Linux系统中z ...
- 【Postman知识分享】Postman测试下载文件和上传文件(图文详解)
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
最新文章
- Java常用类之【日期相关类】
- 生成随机长度字符串,比如密码等
- 集成SpringSecurity---SpringBoot
- linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析!
- 关于Intel IPP的基本使用方法——参照可设置ipl库
- 设计师交流社区,在集设原创作品通过交流发现问题,不断进步!
- iPhone NavigationBar和UIToolbar基础
- 算法刷题指南,来自GitHub 68.8k star的硬核算法教程
- IOS网络——检测网络状态:Reachability
- 绿色版DNF(地下城勇士)全键盘连发工具,支持DNF双开
- HTML和Jsp 页面使用 shiro标签备忘录
- Linux系统面试常问问题,最常见的Linux面试题集锦
- rollup 开发vue组件库及umd SDK 问题总结
- (声明)“天外野草”为本人今后的笔名以及网名
- 数字温湿度传感器DHT11
- python3 pymysql库介绍
- C#调用usb摄像头的实现方法
- 彻底关闭Windows10更新!!
- 复盘:智能座舱系列文六- 它的3种交互方式之显式交互(语音以及显示)
- 玩机搞机---关于安卓机型工厂固件 刷机 端口解密 解bl锁 写串 nv损坏 等相关常识