我尝试从pcl::PointCloud<pcl::PointXYZ>转换到pcl::PCLPointCloud2,但是转换返回一个空点云。这是我的密码:
pcl::PCLPointCloud2 cloud_inliers_pcl2;
pcl::toPCLPointCloud2(cloud_inliers, cloud_inliers_pcl2);我可以打印出云"cloud_inliers“,它位于
pcl::PointCloud<pcl::PointXYZ>但是pcl::PCLPointCloud2返回空字段
发布于 2022-09-21 09:27:14
这是有点晚,但其他搜索相同的主题可能会发现这是有用的。
要在PCLPointCloud2和PointT类型之间进行转换,可以使用:
//转换从PCLPointCloud2到PointT pcl::来自PCLPointCloud2 2(*pc2_cloud_ptr,*xyzrgb_cloud_ptr);
和
/从PointT转换为PCLPointCloud2 pcl::toPCLPointCloud2 2(*xyzrgb_cloud_ptr,*pc2_cloud_ptr);
其中,指向点云的指针定义为:
pcl::PCLPointCloud2 2::Ptr pc2_cloud_ptr (新pcl::PCLPointCloud2 2);
和
pcl::PointCloudpcl::PointXYZRGB::Ptr xyzrgb_cloud_ptr (新pcl::PointCloudpcl::PointXYZRGB);
记住要包括:#include
但是,请注意,如果您使用的是点云库(PointCloudpcl,pcl)而不是机器人操作系统( Robotics,ROS)库,则不需要进行转换,而只需使用PointT类型(例如,pcl::PointCloudpcl::PointXYZRGB::Ptr)。PCL教程中的一些示例使用PCLPointCloud2类型,但我发现PointT类型的工作效果也很好,无需在这些类型之间进行转换。我猜这些教程是为PCL的旧版本准备的。下采样教程是一个很好的例子:https://pcl.readthedocs.io/projects/tutorials/en/latest/voxel_grid.html我使用了PointT类型而不是教程中使用的PCLPointCloud2类型,它在PCL1.11中工作得很好。
注意:我最近开始学习如何在我的硕士论文中使用点云库。很高兴了解有关PCL中数据结构之间转换的更多信息。文档似乎不够,需要尝试和错误来理解数据结构。
https://stackoverflow.com/questions/69716482
复制相似问题