pcl中的均匀采样由于开始不知道怎么得到采样后的索引,网络上没有找到对应的代码,后来看pcl的源码文件,发现可以通过给pcl::UniformSampling传递一个参数true(是否使用移除的索引)得到采样后的索引:
pcl::PointCloud<pcl::PointXYZ>::Ptr incloud(new pcl::PointCloud<pcl::PointXYZ>());
for (int i = 0; i < initial_section_points.size(); ++i)
{
pcl::PointXYZ cur;
cur.x = initial_section_points[i].m_2d_point.X;
cur.y = initial_section_points[i].m_2d_point.Y;
cur.z = 0.0f;
incloud->push_back(cur);
}
pcl::UniformSampling<pcl::PointXYZ> sam(true);
sam.setInputCloud(incloud);
sam.setRadiusSearch(0.1);
pcl::PointCloud<pcl::PointXYZ>::Ptr outCloud(new pcl::PointCloud<pcl::PointXYZ>());
sam.filter(*outCloud);
auto pindex = sam.getIndices();
auto removePindex = sam.getRemovedIndices();
std::vector<int> filterIndex;
//得到采样剩下的点
set_difference(pindex->begin(), pindex->end(), removePindex->begin(), removePindex->end(), std::back_inserter(filterIndex));