#include <iostream>
#include <pcl/ModelCoefficients.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/visualization/pcl_visualizer.h> // 可视化
#include <pcl/filters/extract_indices.h>//按索引提取点云
#include <boost/make_shared.hpp>
#include <pcl/sample_consensus/ransac.h>
#include <pcl/sample_consensus/sac_model_plane.h>
#include <pcl/filters/extract_indices.h>
using namespace std;
typedef pcl::PointXYZ PointT;
typedef pcl::PointCloud<PointT> PointCloudT;
int main()
{
//-------------------------- 加载点云 --------------------------
cout << "->正在加载点云..." << endl;
PointCloudT::Ptr cloud(new PointCloudT);
if (pcl::io::loadPCDFile("raw.pcd", *cloud) < 0)
{
PCL_ERROR("\a->点云文件不存在!\n");
system("pause");
return -1;
}
cout << "->加载点云点数:" << cloud->points.size() << endl;
std::cerr << "Point cloud data: " << cloud->points.size() << " points" << std::endl;
for (size_t i = 0; i < cloud->points.size(); ++i)
std::cerr << " " << cloud->points[i].x << " "
<< cloud->points[i].y << " "
<< cloud->points[i].z << std::endl;
// 模型系数
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers(new pcl::PointIndices);//内点索引
// pcl::PointIndices::Ptr outliers (new pcl::PointIndices);//外点索引
// 创建一个点云分割对象
pcl::SACSegmentation<pcl::PointXYZ> seg;
// 是否优化模型系数
seg.setOptimizeCoefficients(true);
// 设置模型 和 采样方法
seg.setModelType(pcl::SACMODEL_PLANE);// 平面模型
seg.setMethodType(pcl::SAC_RANSAC);// 随机采样一致性算法
seg.setDistanceThreshold(0.01);//是否在平面上的阈值
seg.setInputCloud(cloud);//输入点云
seg.segment(*inliers, *coefficients);//分割 得到平面系数 已经在平面上的点的 索引
// seg.setNegative(true);//设置提取内点而非外点
//seg.segment(*inliers, *coefficients);//分割 得到平面系数 已经在平面上的点的 索引
if (inliers->indices.size() == 0)
{
PCL_ERROR("Could not estimate a planar model for the given dataset.");
return (-1);
}
// 打印平面
2.工作记录:分割平面 拟合两个平面从尝试
于 2022-03-15 16:12:13 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)