Segmentation

Extract Plane

 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 
 9 int
10 main(int argc, char** argv)
11 {
12     pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
13     pcl::io::loadPCDFile("D:\\in.pcd", *cloud);
14 
15     pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);
16     pcl::PointIndices::Ptr inliers(new pcl::PointIndices);
17     // Create the segmentation object
18     pcl::SACSegmentation<pcl::PointXYZ> seg;
19     // Optional
20     seg.setOptimizeCoefficients(true);
21     // Mandatory
22     seg.setModelType(pcl::SACMODEL_PLANE);
23     seg.setMethodType(pcl::SAC_RANSAC);
24     seg.setDistanceThreshold(0.01);
25 
26     seg.setInputCloud(cloud);
27     seg.segment(*inliers, *coefficients);
28 
29     if (inliers->indices.size() == 0)
30     {
31         PCL_ERROR("Could not estimate a planar model for the given dataset.");
32         return (-1);
33     }
34 
35     std::cerr << "Model coefficients: " << coefficients->values[0] << " "
36         << coefficients->values[1] << " "
37         << coefficients->values[2] << " "
38         << coefficients->values[3] << std::endl;
39 
40     int num = inliers->indices.size();
41     pcl::PointCloud<pcl::PointXYZ>::Ptr cloudOut(new pcl::PointCloud<pcl::PointXYZ>);
42     cloudOut->width = num;
43     cloudOut->height = 1;
44     cloudOut->points.resize(cloudOut->width*cloudOut->height);
45     for (int i=0;i<num;++i)
46     {
47         cloudOut->points[i] = cloud->points[inliers->indices[i]];
48     }
49     pcl::io::savePCDFileASCII("D:\\out.pcd", *cloudOut);
50     return (0);
51 }
View Code

 

转载于:https://www.cnblogs.com/larry-xia/p/11008583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值