点云数据pcd文件简介
SLAM学习交流可加群:248085206
三维点云数据简介
1 什么是点云数据
点云数据是指在一个三维坐标系中的一组向量的集合。这些向量通常以X,Y,Z三维坐标的形式表示,一般主要代表一个物体的外表面几何形状,除此之外点云数据还可以附带RGB信息,即每个坐标点的颜色信息,或者是其他的信息。
2 点云数据格式——PCD文件
在这里推荐大家都将都将点云数据保存为 *.pcd文件,因为有pcl这个开源库专门处理pcd格式的文件,它实现了点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
下面是通过pycharm编辑器解析的.pcd文件:
2.1 下面介绍该文件每行具体所代表的含义:
(1).VERSION 0.7
指定pcd文件的版本。
(2).FIELDS
指定每个点可以具有的维度,以及每个维度所代表的含义。
例如:FIELDS x y z r g b表示该点的位置信息(x,y,z),颜色信息(r,g,b)。
(3).SIZE
以字节为单位指定每个数据所占用的内存。
(4).TYPE
指定每个数据的数据类型。其中无效的点的通常存储为NAN类型。
I:可表示int8,int16,int32。
U:可表示uint8,unit16,uint32。
F:表示float(上图所用的为浮点类型)。
(5).COUNT
指定每个维度有多少元素。
例如xyz数据通常只有一个元素。
(6).WIDTH
指定数据点的宽度,它包含两个含义:
1.可指定点云总个数(与POINTS相同),用于无组织的数据。
2.可指定有组织点云数据的宽度(连续点的总数)。
(7).HEIGTH
指定数据点的高度,它包含两个含义:
1.可指定有组织的点云数据的高度(总行数)。
2.对未组织的数据,它被设置为1。
(8).POINTS
指定点云总个数。
(9).VIEWPOINT
采集数据时的视点(由平移tx,ty,tz和四元数qw,qx,qy,qz组成)。
(10).DATA
点云数据存储的数据类型(支持ascii和binary)。如果以ASCII形式,每一点占据一个新行。
3 总结
所有的pcd文件前十行必须是以上的格式,并且不能改变顺序。
4 PCD文件中写入点云
write_pcd.cpp :#include <iostream> //标准C++库中的输入输出的头文件
#include <pcl/io/pcd_io.h> //PCD读写类相关的头文件
#include <pcl/point_types.h> //PCL中支持的点类型的头文件intmain (int argc, char** argv)
{//实例化的模板类PointCloud 每一个点的类型都设置为pcl::PointXYZ
/*************************************************点PointXYZ类型对应的数据结构Structure PointXYZ{float x;float y;float z;};
**************************************************/pcl::PointCloud<pcl::PointXYZ> cloud; //创建一个存储点云的容器,容器中每个点的类型是pcl::PointXYZ。// 并设置点云容器适当的参数(width height is_dense)cloud.width = 5;cloud.height = 1;cloud.is_dense = false; //不是稠密型的cloud.points.resize (cloud.width * cloud.height); //点云总数大小//用随机数的值填充PointCloud点云对象 for (size_t i = 0; i < cloud.points.size (); ++i){cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);}//把PointCloud对象数据存储在 test_pcd.pcd文件中,并以ascii码的形式。pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud); //打印输出存储的点云数据std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;for (size_t i = 0; i < cloud.points.size (); ++i)std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;return (0);
}
5 从PCD文件读取点云数据
write.cpp:#include <iostream> //标准C++库中的输入输出的头文件
#include <pcl/io/pcd_io.h> //PCD读写类相关的头文件
#include <pcl/point_types.h> //PCL中支持的点类型的头文件int
main (int argc, char** argv)
{ //创建一个PointCloud<pcl::PointXYZ> boost共享指针并进行实例化pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);//打开点云文件if (pcl::io::loadPCDFile<pcl::PointXYZ> ("test_pcd.pcd", *cloud) == -1) {PCL_ERROR ("Couldn't read file test_pcd.pcd \n");return (-1);}
//默认就是而二进制块读取转换为模块化的PointCLoud格式里pcl::PointXYZ作为点类型 然后打印出来std::cout << "Loaded "<< cloud->width * cloud->height<< " data points from test_pcd.pcd with the following fields: "<< std::endl;for (size_t i = 0; i < cloud->points.size (); ++i)std::cout << " " << cloud->points[i].x<< " " << cloud->points[i].y<< " " << cloud->points[i].z << std::endl;return (0);
}
点云数据pcd文件简介相关推荐
- PCL Lesson5: 直通滤波+空间平面拟合+提供原始点云数据集PCD文件
书接上文.本节做下面一个工作:通过直通滤波过滤一小片平面区域的点云(标定版),通过最小二乘法拟合,并把参数化的平面绘制在原图中. 待修正:拟合平面时离散点的处理.和拟合效果的判别 效果: 原始点云的文 ...
- pacbio 原始下机数据h5 文件简介
pacbio 采用hdf5文件格式保存原始的下机数据,对于RS 测序系统而言,会产生一个 bas.h5 的文件; 以bas.h5 文件为例,看一下有下机数据中保存了那些信息 h5dump 工具可以用来 ...
- PCD(点云数据)文件格式
本节描述PCD(点云数据)文件格式. 为什么用一种新的文件格式? PCD文件格式并非白费力气地做重复工作,现有的文件结构因本身组成的原因不支持由PCL库引进n维点类型机制处理过程中的某些扩展,而PCD ...
- 激光点云系列之一:详解激光雷达点云数据的处理过程
交流群 | 进"传感器群/滑板底盘群"请加微信号:xsh041388 交流群 | 进"汽车基础软件群"请加微信号:Faye_chloe 备注信息:群名称 + 真 ...
- Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
如有错误,恳请指出. 从这一篇博客开始,开始利用Open3d来处理点云数据.之后将围绕点云数据的多种处理方式来记录笔记.本篇博客的内容包括点云的文件格式介绍,点云数据的读取,以及点云的配准与点云的法向 ...
- 点云数据格式PCD(Point Cloud Data) 数据格式解析
PCD(点云数据)文件格式 为什么用一种新的文件格式? PCD文件格式并非白费力气地做重复工作,现有的文件结构因本身组成的原因不支持由PCL库引进n维点类型机制处理过程中的某些扩展,而PCD文件格式能 ...
- 华云数据升级发布“信创云基座“ 用“全芯全栈”支持“信创强国”
2021年6月10日,北京--2021年是我国"十四五"规划的开局之年,也是我国"加快数字发展 建设数字中国"的关键之年.值此历史交汇的关键点,云计算.大数据. ...
- 用Acceldata数据可观测性方案管理云数据平台Snowflake
一.云数据平台Snowflake简介 在现代数据堆栈的所有部分中,没有一个像云数据平台Snowflake一样迅速崛起. 虽然作为 Databricks.Amazon Redshift和Google B ...
- 从PCD文件写入和读取点云数据
(1)学习向PCD文件写入点云数据 建立工程文件ch2,然后新建write_pcd.cpp CMakeLists.txt两个文件 write_pcd.cpp : #include <iostr ...
最新文章
- 快速滚动_方老师教滚动快速作文
- Spring Autowire自动装配
- You have mail in /var/spool/mail/root
- 【转】CT球管小知识--热容量
- 排除jar_Gradle排除依赖关系
- from rfc 2068 hypertext怎么解决_你好,打工人!用英语怎么表达“打工人”?可别直接说 worker...
- img = img1*mask + img2*(1-mask) How do that ?
- cmd 进入mysql-python_MySQL在cmd和python下的常用操作
- php开发类库,php类库_PHP开发中常用类库
- python实现翻转给定列表中的元素
- stm32例程_如何系统地入门学习stm32?
- 方舟生存进化服务器怎么开?方舟生存进化架设服务器教程
- vsm什么意思_价值流程图VSM浅析
- 地理坐标(经纬度坐标)和屏幕坐标(xy坐标)间的转换
- Gitgub学习笔记(二)
- 关于namecheap 域名运营商,域名赎回详细步骤
- linux查看压缩文件的大小,Linux下不解压压缩文件如何直接查看某个文件大小
- ldd显示可执行模块的dependenc
- Springboot2.0实现在线图片处理(自动去背景、换背景色等功能)
- 原谅我没能像老公那样爱你