使用pcl库处理点云数据,如何给点云的指定字段赋值?

文章介绍了如何在PCL库中处理两个不同类型的点云数据,当它们有相同字段时如何进行赋值。使用pcl::for_each_type和pcl::NdConcatenateFunctor将xyzCloud的xyz字段赋值给xyziCloud的对应字段,并用pcl::SetIfFieldExists将xyziCloud的intensity字段设置为100。
摘要由CSDN通过智能技术生成

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));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值