1.不同字段的两个点云之间存在相同字段时,如何给对应的相同字段赋值?
pcl::PointCloud<pcl::PointXYZ>::Ptr xyzCloud(new pcl::PointCloud<pcl::PointXYZ>());
pcl::PointCloud<pcl::PointXYZI>::Ptr xyziCloud(new pcl::PointCloud<pcl::PointXYZI>());
//...假定xyzCloud为已知点云数据,将其中的xyz字段赋值给xyziCloud中对应的字段
using FieldList1 = typename pcl::traits::fieldList<pcl::PointXYZ>::type;
using FieldList2 = typename pcl::traits::fieldList<pcl::PointXYZI>::type;
for (std::size_t j = 0; j < xyziCloud->size(); ++j)
{
//将xyzCloud里的字段(x,y,z)复制到xyziCloud里对应的字段
pcl::for_each_type<FieldList1>(pcl::NdConcatenateFunctor <pcl::PointXYZ, pcl::PointXYZI>(xyzCloud->at(j), xyziCloud->at(j)));
//将xyziCloud里的intensity字段赋值为100
pcl::for_each_type<FieldList2>(pcl::SetIfFieldExists<pcl::PointXYZI, float>(xyziCloud->at(j), "intensity", 100.0));
}