过滤点云后如何提取特定群集?

时间:2016-02-29 19:46:18

标签: c++ point-cloud-library

您好我正在使用点云库,我对在过滤点云并使用欧几里德聚类提取进行分段后提取第一个聚类的点有疑问。以下代码是我认为可能用于提取集群点的代码:

   std::vector<pcl::PointIndices> cluster_indices;
   typename pcl::search::KdTree<PointT>::Ptr tree (new pcl::search::KdTree<PointT>);
   tree->setInputCloud(out_cloud);
   pcl::EuclideanClusterExtraction<PointT> ec;
   ec.setClusterTolerance(2 * 0.06);
   ec.setMinClusterSize(50);
   ec.setMaxClusterSize(1200);
   ec.setSearchMethod(tree);
   ec.setInputCloud(filtered_cloud);
   ec.extract(cluster_indices);
   int j = cluster_indices.size();
   tam_cluster = cluster_indices[0].indices.size();
   int ind_tmp;

   for (int n=0; n<tam_cluster; n++){
      ind_tmp=cluster_indices[0].indices[n];
      first_clust->points.push_back (filtered_cloud->points[ind_tmp]); 
   }
   std::cout << " ** Number of points of first cluster : " <<  first_clust->size() <<std::endl;

所以我不知道为什么,但有时我会得到一个超过1200分的集群。或者是因为在提取集群时pcl实现的原因。

希望有人能告诉我我正在做的事情是对的,谢谢

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,一旦你通过这个示例代码,这可能会有用 GitHub Link for Cluster Extraction

尝试更改这些参数的值SetRadiusSearch,tolerance,eps_angle,min_cluster_size和u将获得总簇数,并且所有簇数据将保存到单独的pcd文件中。

希望这会对你有所帮助。