使用分割算法分割完成后,会将分割的点云索引保存在pcl::PointIndices类型的数据中,其实是一个vector的数组。经过该indices使用pcl::ExtractIndices<PointT>把点云提取到单独的点云中。php
http://pointclouds.org/documentation/tutorials/cylinder_segmentation.php#cylinder-segmentation算法
#include <pcl/filters/extract_indices.h> typedef pcl::PointXYZ PointT; //分割的输入点云 pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>); //保存分割后点云的数据索引 pcl::PointIndices::Ptr inliers_plane(new pcl::PointIndices); //提取 pcl::ExtractIndices<PointT> extract; extract.setInputCloud(cloud); extract.setIndices(inliers_plane); //保存提取的plane点云 extract.setNegative(false); //存放提取的plane点云 pcl::PointCloud<PointT>::Ptr cloud_plane(new pcl::PointCloud<PointT>()); extract.filter(*cloud_plane); // Remove the planar inliers, extract the rest extract.setNegative(true); pcl::PointCloud<PointT>::Ptr cloud_filtered2(new pcl::PointCloud<PointT>); //提取剩余的点云 extract.filter(*cloud_filtered2);