代码展示:

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/visualization/pcl_visualizer.h>using namespace std;
using PointT = pcl::PointXYZ;int main() {// 加载点云pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);if (pcl::io::loadPCDFile<PointT>("/home/pi/Desktop/pcl/data/tutorials/table_scene_lms400.pcd", *cloud) == -1) {cout << "加载点云失败" << endl;return -1;}//创建分割时所需要的模型系数对象,coefficients及存储内点的点索引集合对象inlierspcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);pcl::PointIndices::Ptr inliers(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);//引发分割实现,存储分割结果到点几何inliers及存储平面模型的系数coefficientsseg.segment(*inliers, *coefficients);if (inliers->indices.size() == 0) {PCL_ERROR("分割平面失败.");return (-1);}// 提取平面点云pcl::ExtractIndices<PointT> extract;extract.setInputCloud (cloud);extract.setIndices(inliers);extract.setNegative (false);pcl::PointCloud<PointT>::Ptr cloud_plane (new pcl::PointCloud<PointT> );extract.filter (*cloud_plane);if (cloud_plane->points.empty ())std::cerr << "提取平面点云失败." << std::endl;// 可视化分割结果pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("viewer"));int v1(0);viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1);viewer->setBackgroundColor(0, 0, 0, v1);viewer->addText("Raw", 10, 10, "v1_text", v1);int v2(1);viewer->createViewPort(0.5, 0.0, 1, 1.0, v2);viewer->setBackgroundColor(0.1, 0.1, 0.1, v2);viewer->addText("Seg", 10, 10, "v2_text", v2);viewer->addPointCloud<PointT>(cloud, "cloud_sample", v1);viewer->addPointCloud<PointT>(cloud_plane, "cloud_seg", v2);while (!viewer->wasStopped()) {viewer->spinOnce(100);}return 0;
}

点云文件下载地址:table_scene_lms400.pcd

效果展示:

PCL之平面分割模型相关推荐

  1. PCL 点云分割与分类 Segmentation RANSAC随机采样一致性 平面模型分割 欧氏距离分割 区域聚类分割算法 最小分割算法 超体聚类 渐进式形态学滤波器

    点云分割 博文末尾支持二维码赞赏哦 _ 点云分割是根据空间,几何和纹理等特征对点云进行划分, 使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提, 例如逆向工作,CAD领域对零件的 ...

  2. 点云PCL学习笔记-分割segmentation-RANSAC随机采样一致性算法欧式聚类提取

    随机采样一致性算法RANSAC 程序实例参考网址: https://pcl.readthedocs.io/projects/tutorials/en/latest/random_sample_cons ...

  3. 29 基于PCL的点云平面分割拟合算法技术路线(针对有噪声的点云数据)

    0 引言 最近项目中用到了基于PCL开发的基于平面的点云和CAD模型的配准算法,点云平面提取采用的算法如下. 1 基于PCL的点云平面分割拟合算法 2 参数及其意义介绍 (1)点云下采样 1. 参数: ...

  4. PCL点云分割(1)

    点云分割是根据空间,几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提,例如逆向工作,CAD领域对零件的不同扫描表面进行分割,然后才能更好的进行空洞 ...

  5. PCL点云分割(2)

    关于点云的分割算是我想做的机械臂抓取中十分重要的俄一部分,所以首先学习如果使用点云库处理我用kinect获取的点云的数据,本例程也是我自己慢慢修改程序并结合官方API 的解说实现的,其中有很多细节如果 ...

  6. 3d激光雷达开发(平面分割)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 平面分割是点云数据经常需要处理的一个功能.在很多场景下面,平面数据都是没有用的.这个时候需要考虑 ...

  7. Open3d之点云平面分割

    Open3D还支持使用RANSAC从点云中分割几何图元. 要查找点云中最有可能存在的平面,我们使用segement_plane函数. 该方法具有三个参数:destance_threshold定义了一个 ...

  8. 大场景三维点云语义分割模型

    大场景三维点云语义分割模型 基于2D的方法 SqueezeSeg系列 一.简介 二.核心思路总结 三.要点分析 四.总结 VIASEG: VISUAL INFORMATION ASSISTED LIG ...

  9. 使用无人机 LiDAR 的重叠树冠的新型植被点云密度树分割模型

    Paper题目:A Novel Vegetation Point Cloud Density Tree-Segmentation Model for Overlapping Crowns Using ...

最新文章

  1. 常见基本不等式的几何解释
  2. 做 SQL 性能优化真是让人干瞪眼
  3. mock方法常用框架_什么是Mock测试?
  4. 马化腾谈滴滴;苹果供应商研发柔性玻璃;丁磊谈沉迷手机 | 极客头条
  5. 我在美团的八年,技术人必读
  6. Qt之QToolBox
  7. java字典表_SpringBoot中实现数据字典的示例代码
  8. EF Code First 更新数据库, 数据库迁移
  9. recovery.img 的解包与打包
  10. 拿信用卡套个首付买房子——引火自焚
  11. 破解虚拟机ESXi服务器密码,esxi虚机Windows server 2012忘记密码解决办法
  12. CSS 利用@media screen判断识别手机/PC端浏览器
  13. HTML学生考勤界面代码,基于jsp的学生考勤系统-JavaEE实现学生考勤系统 - java项目源码...
  14. html常用长度单位
  15. 3.Vue.js 实战 调查问卷WebApp项目
  16. FX5u控制4个伺服,一个完整的项目 程序用 标签分层,说明了定位控制中的公共参数设定、回原点、
  17. bat 格式化年月日时分秒
  18. win7系统怎么打开打印服务器失败,win7安装网络打印机驱动老是失败如何解决
  19. android 百度导航 过路费,高德地图和百度地图规划路线不一样,且过路费也有差别如何选择?...
  20. java 深入剖析ThreadLocal

热门文章

  1. 天猫浏览型应用的CDN静态化架构演变
  2. (转)C#中的Dictionary字典类介绍
  3. 二进制数据(Image类型)从一个表存入另一个表
  4. 38个Pandas实用技巧
  5. Shell脚本实现SSH免密登录及批量配置管理
  6. 设计程序时,注意和外系统连携相关的处理
  7. css中的伪类 之 first-child
  8. 20-21-2网络管理quiz3
  9. MYSQL主从不同步延迟原理分析及解决方案
  10. WORD Application.Documents.Open函数返回null的一种解决方法