PCL点云的保存和显示

1.pcl点云的保存


1.首先将获得的点云x,y,z分别存放在三个vector中

2.pcl  是一个命名空间,跟std类似,PointCloud是类模板,<pcl::PointXYZ>是模板类实例化的类型

3cloud.height用来判断是否为有序点云,=1则是无序点云也可以使用如下函数代替:if (!cloud.isOrganized ()),

4.对于无序点云来说:(1)width就是指点云中点的个数,此时也就是x,y或者z的个数,故等于TestPXc.size();

5.对于有结构点云来说:width是指点云数据集一行上点的个数。Anorganized point clouddataset is the name given to point clouds that resemble an organized image (or matrix) like structure, where the data is split into rows and columns.立体相机或者TOF相机获得的点云数据就属于这一类。对于有结构点云的一大好处就是能知道点云中点的相邻关系,最近邻操作效率就非常高,可以大大提高PCL中相应算法的效率。但是结构点云经过某些人为操作后,会变为无结构点云,比如滤波操作等。而PCL算法库里面的某些重要算法,仅支持结构点云,比如多平米分割算法(OrganizedMultiPlaneSegmentation)。

例如:有结构点云

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

6。cloud.is_dense (bool)  判断points中的数据是否是有限的(有限为true)或者说是判断点云中的点是否包含 Inf/NaN这种值(包含为false)。

7.points存储了数据类型为PointT的一个动态数组,例如,对于一个包含了XYZ数据的点云,points是包含了元素为pcl::PointXYZ一个vector。 相当于vector<point3f>

8。cloud.points赋值后,通过存储对象cloud可以将点云保存,保存函数为I/O模块中的savePCDFileASCII,第一个参数为保存名称,第二个为点云对象,保存在工程目录下。


猜你喜欢

转载自blog.csdn.net/konglingshneg/article/details/80648670