1. 记录一个小问题,凑够200篇,hhh
报错
error: invalid initialization of reference of type ‘const pcl::PCLPointCloud2&’ from expression of type ‘pcl::PointCloud<pcl::PointXYZ>’
源代码如下
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_final(new pcl::PointCloud<pcl::PointXYZ>);
pcl::concatenatePointCloud(*cloud_in, *output_cloud, *cloud_final);
原因与解决:
这个错误是因为pcl::concatenatePointCloud
函数的第一个和第二个参数类型应该是const pcl::PCLPointCloud2&
,而传递的是pcl::PointCloud<pcl::PointXYZ>
类型的指针。可以使用以下代码将点云转换为pcl::PCLPointCloud2
类型:
// 添加
pcl::PCLPointCloud2::Ptr cloud_in_blob(new pcl::PCLPointCloud2);
pcl::PCLPointCloud2::Ptr output_cloud_blob(new pcl::PCLPointCloud2);
pcl::PCLPointCloud2::Ptr cloud_final_blob(new pcl::PCLPointCloud2);
pcl::toPCLPointCloud2(*cloud_in, *cloud_in_blob);
pcl::toPCLPointCloud2(*output_cloud, *output_cloud_blob);
pcl::concatenatePointCloud(*cloud_in_blob, *output_cloud_blob, *cloud_final_blob);//修改位置
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_final(new pcl::PointCloud<pcl::PointXYZ>);
pcl::fromPCLPointCloud2(*cloud_final_blob, *cloud_final);
这个代码将pcl::PointCloud<pcl::PointXYZ>
类型的点云转换为pcl::PCLPointCloud2
类型,将它们进行拼接,然后再将结果转换回pcl::PointCloud<pcl::PointXYZ>
类型。