在做数据提取的时候容易出现如下图所示错误:
原因进士红色框内所显示的,点数不一造成的。个人觉得应该是点云文件中的width和height 的数值在常见的时候是默认值,需要给定一个准确的值。
方法如下所示,就是给点云文件中的这两个成员,给定一个准确的值即可。
int j = 0;
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_extract(new pcl::PointCloud<pcl::PointXYZ>);
for (int i = 0; i < cloud->points.size(); i++)
{
pcl::PointXYZ p;
//设定提取范围内的点的范围
if (cloud->points[i].x > 0.018|| cloud->points[i].z<-0.018)
{
p.x = cloud->points[i].x;
p.y = cloud->points[i].y;
p.z = cloud->points[i].z;
cloud_extract->push_back(p);
j++;
}
}
//对于无序点云hight默认是1
cloud_extract->height = 1;
//cloud_extract点云文件中push_back了j个点,故width=j
cloud_extract->width = j;
该问题并不复杂,找到原因解决即可。