一、模块
I/O模块
1、PCD文件格式
PCD header包含:VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA几部分内容。
VERSION表示PCD文件的版本。
FIELDS点云维度/场的名称。
SIZE表示每个维度的大小(bytes)。
TYPE每个维度的数据存储类型。
COUNT每个维度拥有的元素的个数。
WIDTH和HEIGHT表示点云数据集的宽/长(元素个数),无序的点云表示其总点数。
VIEWPOINT用于构建不同坐标系之间的转换或者添加法向量等辅助功能,格式为平移(tx ty tz)+四元数(qw qx qy qz)
POINTS点云数据集总点数
DATA存储的具体数据
顺序:VIEWPOINT
2、读取点云
初始化点云
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
点云数据读取
pcl::io::loadPCDFile<pcl::PointXYZ> ("test_pcd.pcd", *cloud)
------------------------------------------------------------------------------------
与ROS交互时使用的点云类型为pcl::PCLPointCloud2,此时更倾向于使用binary blobs来加载点云:
pcl::PCLPointCloud2 cloud_blob; pcl::io::loadPCDFile ("test_pcd.pcd", cloud_blob); pcl::fromPCLPointCloud2 (cloud_blob, *cloud);//从PCL2转换为PCL
----------------------------------------------------------------------------------------------------
读取效果
3.自己创建一个点云并保存为PCD文件(截取了几行关键的命令)
pcl::PointCloud<pcl::PointXYZ> cloud;#初始化
cloud.resize (cloud.width * cloud.height);#改变点云的大小
pcl::io::savePCDFileASCII ("test_pcd.pcd",<点云名称>);