原博客地址:https://blog.csdn.net/h287850870/article/details/81184397
本文就自己在pcl中碰到过的copyPointCloud两种使用方法进行了总结:
Part 1: 完全拷贝到新的点云之中:pcl::copyPointCloud (const pcl::PointCloud &cloud_in,pcl::PointCloud &cloud_out)
(2个参数)
pcl::PointCloud<pcl::PointXYZ>::Ptr src(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointNormal>::Ptr src_PN(new pcl::PointCloud<pcl::PointNormal>);
pcl::io::loadPCDFile("src.pcd",*src); //载入原数据
pcl::io::loadPCDFile("src_pn.pcd", *src_PN); //载入原数据
pcl::copyPointCloud(*src, *src_PN); //src中的xyz覆盖掉src_PN中的xyz值,然后把xyz+normal的信息给src_PN
pcl::io::savePCDFile("src_with_normal.pcd", *src_PN);
Part 2: 部分索引的使用:pcl::copyPointCloud (const pcl::PointCloud &cloud_in, const std::vector & indices,pcl::PointCloud &cloud_out)
(3个参数)
pcl::PointCloud<pcl::PointXYZ>::Ptr src(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("src.pcd",*src);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloudout(new pcl::PointCloud<pcl::PointXYZ>);
std::vector<int>indexs = { 0,2,6 }; //索引
pcl::copyPointCloud(*src, indexs, *cloudout);//只取src中的第1,第3个,第7个点赋值到新的cloudout中。
pcl::io::savePCDFile("cloud_out.pcd", *cloudout);
Part 3 其余的重载函数:PCL中还有很多,但是自己暂时未用到,见下图。后面用到了在补充。