在本教程中,将学习 根据分割算法输出的索引 使用ExtractIndices过滤器从点云中提取点的子集。
创建extract_indices.cpp文件
源码:
1#include <iostream>
2#include <pcl/ModelCoefficients.h>
3#include <pcl/io/pcd_io.h>
4#include <pcl/point_types.h>
5#include <pcl/sample_consensus/method_types.h>
6#include <pcl/sample_consensus/model_types.h>
7#include <pcl/segmentation/sac_segmentation.h>
8#include <pcl/filters/voxel_grid.h>
9#include <pcl/filters/extract_indices.h>
10
11int
12main ()
13{
14 pcl::PCLPointCloud2::Ptr cloud_blob (new pcl::PCLPointCloud2), cloud_filtered_blob (new pcl::PCLPointCloud2);
15 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>), cloud_p (new pcl::PointCloud<pcl::PointXYZ>), cloud_f (new pcl::PointCloud<pcl::PointXYZ>);
16
17 // Fill in the cloud data
18 pcl::PCDReader reader;
19 reader.read ("table_scene_lms400.pcd", *cloud_blob);
20
21 std::cerr << "PointCloud before filtering: " << cloud_blob->width * cloud_blob->height << " data points." << std::endl;
22
23 // Create the filtering object: downsample the dataset using a leaf size of 1cm
24 pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
25 sor.setInputCloud (cloud_blob);
26 sor.setLeafSize (0.01f, 0.01f, 0.01f);
27 sor.filter (*cloud_filtered_blob);
28
29 // Convert to the templated PointCloud
30 pcl::fromPCLPointCloud2 (*cloud_filtered_blob, *cloud_filtered);
31
32 std::cerr << "PointCloud after