在本教程中,将学习 根据分割算法输出的索引 使用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

本教程介绍如何运用ExtractIndices过滤器,根据分割算法的索引输出,从点云数据中提取特定点子集。首先,加载必要头文件,创建点云对象并读取数据。接着,应用VoxelGrid进行下采样,然后使用SACSegment进行模型分割,设定距离阈值。最后,利用迭代方法提取每个模型的内点,形成点云子集。通过编译并运行示例代码,可以观察到点云提取的效果。
最低0.47元/天 解锁文章

867

被折叠的 条评论
为什么被折叠?



