1 点云复制:copyPointCloud
copyPointCloud<PointXYZRGBA,PointXYZRGBA>(*cloud_in,*cloud_out);
cloud_in,cloud_out分别为输入输出的点云指针。
2 点云采样
void pcl::copyPointCloud ( const PointCloud<PointT> & cloud_in,
const std::vector< int > & indices,
PointCLoud<PointT> & cloud_out )
通过indices存储需要复制的点索引。通过构建indices,便可实现任意的采样。
将640*480的Organized点云降采样的代码如下:(降成320*240)
PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA>);
vector<int> indice;
for(int i=0;i<cloudRaw->size();i++)
{if(i/cloudRaw->width%2==0 && i%cloudRaw->width%2==0){indice.push_back(i);}}
copyPointCloud<PointXYZRGBA,PointXYZRGBA>(*cloudRaw,indice,*cloud);
cloud->width=cloudRaw->width/2;cloud->height=cloudRaw->height/2;cloud->resize(cloud->width*cloud->height);
因为copy后得到的点云为无序点云,若仍要使点云有序,改变点云的width和height即可。