相关头文件:
声明和定义点云对象:
初始化点云数据PCD文件头:
cloud.height用来判断是否为有序点云,=1则是无序点云也可以使用如下函数代替:if (!cloud.isOrganized ()),对于无序点云来说:width就是指点云中点的个数,对于有结构点云来说:width是指点云数据集一行上点的个数,立体相机或者TOF相机获得的点云数据就属于这一类。对于有结构点云的一大好处就是能知道点云中点的相邻关系,最近邻操作效率就非常高,可以大大提高PCL中相应算法的效率。但是结构点云经过某些人为操作后,会变为无结构点云,比如滤波操作等。
例如:有结构点云
cloud.width = 640; // Image-like organized structure, with 640 rows and 480 columns,
cloud.height = 480; // thus 640*480=307200 points total in the dataset
无结构点云
cloud.width = 307200;
cloud.height = 1; // unorganized point cloud dataset with 307200 points
cloud.is_dense (bool) 判断points中的数据是否是有限的(有限为true)或者说是判断点云中的点是否包含 Inf/NaN这种值(包含为false)。
points存储了数据类型为PointT的一个动态数组,例如,对于一个包含了XYZ数据的点云,points是包含了元素为pcl::PointXYZ一个vector。 相当于vector<point3f>
可视化pcd文件: