在本教程中,将学习如何对一组点进行简单的平面分割,即找到点云中支持平面模型的所有点。
创建planar_segmentation.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
9int
10 main ()
11{
12 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
13
14 // Fill in the cloud data
15 cloud->width = 15;
16 cloud->height = 1;
17 cloud->points.resize (cloud->width * cloud->height);
18
19 // Generate the data
20 for (auto& point: *cloud)
21 {
22 point.x = 1024 * rand () / (RAND_MAX + 1.0f);
23 point.y = 1024 * rand () / (RAND_MAX + 1.0f);
24 point.z = 1.0;
25 }
26
27 // Set a few outliers
28 (*cloud)[0].z = 2.0;
29 (*cloud)[3].z = -2.0;
30 (*cloud)[6].z = 4.0;
31
32 std::cerr << "Point cloud data: " << cloud->size () << " points" << std::endl;
33 for (const auto& point: *cloud)
34 std::cerr << " " << point.x << " "
35 << point.y << " "
36 << point.z << std::endl;
37
38 pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
39 pcl::PointIndices::Pt