点云数据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中支持的点类型的头文件

int
  main (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);
}
  • 13
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
激光点云(PointCloud)PCD文件是一种常见的点云数据存储格式,通常用于激光扫描设备生成的三维点云数据。如果您想下载激光点云PCD文件,可以按照以下步骤进行。 首先,确定您要下载的激光点云PCD文件的来源。激光点云PCD文件可以从各种资源获取,例如网上开放的点云数据集、学术论文附带的数据集或特定软件生成的数据。确保您获得可信来源的PCD文件。 其次,确定您计算机上是否已安装点云数据处理软件,例如PCL(Point Cloud Library)、Matlab、ROS(Robot Operating System)等。这些软件提供了对PCD文件的读取和处理功能。 然后,打开您选择的点云数据处理软件,并导航到文件下载所在的目录或指定路径。如果您从网上下载PCD文件,可以选择将其保存到计算机的特定目录中。 接下来,在点云数据处理软件中,打开文件菜单或使用相应的命令将PCD文件导入到软件中。根据软件的不同,导入PCD文件的方式可能会有所不同。 最后,等待软件完成PCD文件的导入过程。一旦文件成功导入,您就可以在点云数据处理软件中对其执行各种操作,例如可视化、滤波、分割、配准等。 需要注意的是,PCD文件下载和处理可能需要较长的时间,具体取决于您计算机的性能和文件的大小。此外,确保您已获得合法的PCD文件并遵守任何涉及数据使用的相关法律和条例。 总结起来,下载激光点云PCD文件需要从可靠的来源获取文件,并使用相应的点云数据处理软件将其导入到计算机中进行进一步的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值