pcl指定高度处切片
指定高度切片
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud(cloud);
pass.setFilterFieldName("z"); //根据z轴进行切片
pass.setFilterLimits(1.3, 1.4); //设置在过滤方向上的过滤范围
// pass.setKeepOrganized(true); // 保持有序点云结构,该功能用于有序点云才有意义。
pass.setNegative(false); //设置保留范围内的点还是过滤掉范围内的点,标志为false时保留范围内的点
pass.filter(*cloud_filtered);
pcl::PCDWriter writer;
writer.write("wenjianweizhi", *cloud_filtered);
如下图效果:
等距间隔切片
for (int i = 0; i < m_cloud->size(); ++i)
{
// 计算间隔数
int index = floor((m_cloud->points[i].z - minPt.z) / m_dPlatform);
// Z最小值+间隔数*切片间距=下一个切片的最小值
float sliceMin = minPt.z + index * m_dPlatform;
// 在切片厚度范围内的点为同一层切片
if ((m_cloud->points[i].z >= sliceMin) && (m_cloud->points[i].z < sliceMin + m_Delta))
{
point_idx[i] = index;
}
}
如下图效果:
**
在点云上不共线选点切片
**