『表面』在平面模型上提取凸(凹)多边形

原始点云

直通滤波,z轴0~1.1

 

分割模型为平面,分割结果进行投影

 

 

提取多边形

 

代码:

#include <pcl/ModelCoefficients.h> // 模型系数的数据结构,如平面、圆的系数
#include <pcl/io/pcd_io.h>

#include <pcl/point_types.h> // 点云数据类型
#include <pcl/sample_consensus/method_types.h> // 采样一致性方法(Sample Consensus Methods)的枚举类型,如RANSAC(随机采样一致性)
#include <pcl/sample_consensus/model_types.h> // 采样一致性模型(Sample Consensus Models)的枚举类型,例如平面、圆

#include <pcl/filters/passthrough.h> // 直通滤波器,指定范围筛选
#include <pcl/filters/project_inliers.h> // 点云数据投影到指定模型(如平面),可用于提取点云数据的特定部分

#include <pcl/segmentation/sac_segmentation.h> // 基于采样一致性的分割,将点云数据分割为不同的部分,如平面、圆柱
#include <pcl/surface/concave_hull.h> // 生成点云数据凹多边形(concave Hull)表示的方法,可用于提取点云数据的边界信息
#include <pcl/visualization/cloud_viewer.h>

int main(){

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>),
            cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>),
            cloud_projected(new pcl::PointCloud<pcl::PointXYZ>);

    // 读取点云数据
    pcl::PCDReader reader;
    reader.read("/home/jason/file/pcl-learning/11surface表面/2在平面模型上提取凸(凹)多边形/table_scene_mug_stereo_textured.pcd", *cloud);

    // 建立过滤器对z轴进行过滤
    pcl::PassThrough<pcl::PointXYZ> pass;
    pass.setInputCloud(cloud);
    pass.setFilterFieldName("z");
    pass.setFilterLimits(0, 1.1);
    pass.filter(*cloud_filtered);
    std::cerr << "PointCloud after filtering has: "
              << cloud_filtered->points.size() << " data points." << std::endl;

    // 分割点云数据
    pcl::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); // 设置采用RANSAC算法进行分割
    seg.setDistanceThreshold(0.01); // 设置点到平面的最大距离阈值

    seg.setInputCloud(cloud_filtered);  // 设置输入点云
    seg.segment(*inliers, *coefficients); // 执行点云分割
    std::cerr << "PointCloud after segmentation has: "
              << inliers->indices.size() << "inliers." << std::endl;

    // 对点云投影
    pcl::ProjectInliers<pcl::PointXYZ> proj; // 创建投影对象滤波器对象
    proj.setModelType(pcl::SACMODEL_PLANE); // 设置模型类型为平面
    proj.setIndices(inliers); // 设置输入点云的索引
    proj.setInputCloud(cloud_filtered); // 设置输入点云
    proj.setModelCoefficients(coefficients); // 平面模型的系数设置到投影滤波器中
    proj.filter(*cloud_projected); // 进行投影滤波
    std::cerr << "PointCloud after projection has: "
              << cloud_projected->points.size() << " data points. " << std::endl;

    // 存储提取多边形上的点云
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_hull(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::ConcaveHull<pcl::PointXYZ> chull; // 创建多边形提取对象
    chull.setInputCloud(cloud_projected); // 设置输入点云为
    chull.setAlpha(0.1);
    chull.reconstruct(*cloud_hull);

    std::cerr << "Concave hull has: " << cloud_hull->points.size()
              << " data points." << std::endl;
    pcl::PCDWriter writer;
    writer.write("/home/jason/file/pcl-learning/11surface表面/2在平面模型上提取凸(凹)多边形/table_scene_mug_stereo_textured_hull.pcd",
                 *cloud_hull, false);


    pcl::visualization::CloudViewer viewer("cloud viewer");
    viewer.showCloud(cloud);  // 每次只能展示一个
//    viewer.showCloud(cloud_filtered);
//    viewer.showCloud(cloud_hull);

    while (!viewer.wasStopped() ) {

    }


    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/37973.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nginx uwsgi配置django

uwsgi文件 [uwsgi] # 服务端口号&#xff0c;这里没有设置IP值&#xff0c;默认是加载服务器的IP地址 #http :5000 socket:8000 # flask项目地址 chdir /pyprogram/electric # wsgi文件 /home/flask_project/mange.py #module app:app wsgi-file/pyprogram/electric/electr…

手搓一台简单的网络损伤仪——弱网测试

1、介绍 支持对链路带宽、传输时延、丢包率和无码率的手动设置&#xff1b; 1.1、网络损伤仪在使用时&#xff0c;网络拓扑连接 1.2、网络损伤仪管理页面展示 2、使用的设备及相关技术栈 一台Intel 赛扬 J1900的迷你主机【拥有4个千兆网口】&#xff1b;ubuntu-18.04.5-live…

【机器学习】了解 AUC - ROC 曲线

一、说明 在机器学习中&#xff0c;性能测量是一项基本任务。因此&#xff0c;当涉及到分类问题时&#xff0c;我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时&#xff0c;我们使用AUC&#xff08;曲线下面积&#xff09;ROC&#xff08;接收器工作特…

Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务六&#xff1a;训练FastText、Word2Vec词向量 任务六&#xff1a;学会训练FastText、Word2Vec词向量 说明&#xff1a;在这个任务中&#xff0c;你将学习如何训练FastText和Word2Vec词向量模型&#xff0c;这些词向量…

Linux地盘上AMD处理器称王了

近日资讯&#xff0c;尽管从全局来看&#xff0c;Linux系统份额远不及Windows&#xff0c;但在程序员、开发者、硬核玩家圈子&#xff0c;Linux则备受推崇。 来自Steam的最新数据显示&#xff0c;在Linux游戏用户中&#xff0c;AMD处理器的份额占据绝对优势&#xff0c;达到了…

ts学习(一):基础篇1

旨在记录&#xff01; 这篇人都学废了&#xff0c;本想记录常用类型&#xff0c;越学越多&#xff0c;每一个都很重要… 一、string: 字符串类型二、number: 数字类型三、boolean: 布尔值四、array:数组五、tuple: 元组六、字面量七、object:对象八、any: 任意类型九、unknown:…

Spring MVC文件上传

Spring MVC文件上传 Spring MVC 框架的文件上传基于 commons-fileupload 组件&#xff0c;并在该组件上做了进一步的封装&#xff0c;简化了文件上传的代码实现&#xff0c;取消了不同上传组件上的编程差异。 1. MultipartResolver接口 在 Spring MVC 中实现文件上传十分容易…

云和DevOps如何帮助加速数字化转型?

1.云和 DevOps&#xff1a;概述 数字化转型已成为寻求在现代时代蓬勃发展的企业的一项关键举措。为了加速这一转型&#xff0c;组织正在利用云计算的力量并采用DevOps实践。云计算提供可扩展且灵活的基础架构&#xff0c;而 DevOps 则支持协作和持续交付的文化。本文将探讨云和…

MySQL:数据的增删改查

数据的增删改查 前言一、插入数据1、实际问题2、方式1&#xff1a;VALUES的方式添加3、方式2&#xff1a;将查询结果插入到表中 二、删除数据三、更新数据四、查询数据五、MySQL8新特性&#xff1a;计算列 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知…

PyTorch中的torch.nn.Linear函数解析

torch.nn是包含了构筑神经网络结构基本元素的包&#xff0c;在这个包中&#xff0c;可以找到任意的神经网络层。这些神经网络层都是nn.Module这个大类的子类。torch.nn.Linear就是神经网络中的线性层&#xff0c;可以实现形如yXweight^Tb的加和功能。 nn.Linear()&#xff1a;…

数据库的分片策略

数据库的分片策略 1、范围分片2、hash 取模分片3、一致性hash 分片 1.分片策略 数据库的分片策略是指将数据库中的数据按照一定的规则和方式进行分割&#xff08;分片&#xff09;存储在不同的物理节点或服务器上的策略。分片策略旨在实现水平扩展&#xff0c;提高数据库的性…

前端下载PDF内容空白且大小偏大问题解决

前端使用React框架axios请求后端接口下载文件&#xff0c;请求返回正常但文件大小和内容异常。经排查&#xff0c;其原因是使用了mockjs用作数据模拟&#xff0c;导致了请求异常&#xff0c;将其注释掉后&#xff0c;文件大小与内容恢复正常。 目录 1.文件异常 2.定位问题 3…

【VirtualBox】安装 VirtualBox 提示 needsthe Microsoft Visual C++ 2019

概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、开发环境 开发环境&#xff1a;windows10虚拟机&#xff1a;VirtualBox 7.0.8 二、报错 ubun…

汽车销售数据可视化分析实战

1、任务 市场需求&#xff1a;各年度汽车总销量及环比&#xff0c;各车类、级别车辆销量及环比 消费能力/价位认知&#xff1a;车辆销售规模及环比、不同价位车销量及环比 企业/品牌竞争&#xff1a;各车系、厂商、品牌车销量及环比&#xff0c;市占率及变化趋势 热销车型&…

ChatGPT与Claude对比分析

一 简介 1、ChatGPT: 访问地址&#xff1a;https://chat.openai.com/ 由OpenAI研发,2022年11月发布。基于 transformer 结构的大规模语言模型,包含1750亿参数。训练数据集主要是网页文本,聚焦于流畅的对话交互。对话风格友好,回复通顺灵活,富有创造性。存在一定的安全性问题,可…

亚马逊云科技,加速生成式AI的落地

编辑&#xff1a;阿冒 设计&#xff1a;沐由 “展望今天的世界&#xff0c;在机遇之外&#xff0c;更多事后我们看到的是前所未有的巨大挑战。事实证明&#xff0c;惟有通过创新、专注创新&#xff0c;方能挖掘和发现更多的增长机会。” 在2023亚马逊云科技中国峰会的第二天&am…

OpenCV(图像处理)-图片搜索

图片搜索 1.知识介绍2.实现流程2.1 计算特征点与描述子2.2 描述子的匹配2.3 求出单应性矩阵并画出轮廓2.4 将特征点标出 此篇博客作者仍在探索阶段&#xff0c;还有一些模糊的概念没有弄懂&#xff0c;请读者自行分辨。 1.知识介绍 Opencv进行图片搜索需要的知识有&#xff1…

MWeb Pro for Mac(苹果电脑最好用的Markdown编辑器)安装教程

MWeb Pro是一款专业的Mac平台上的Markdown编辑器&#xff0c;可以帮助用户更加高效地书写和排版文本内容&#xff0c;支持多种文本格式的导入和导出&#xff0c;如HTML、RTF、PDF等&#xff0c;还支持实时预览和代码高亮等功能&#xff0c;为用户提供了非常优秀的Markdown编辑体…

Linux与Windows:操作系统的比较与技巧分享

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

校园跑腿小程序都包括哪些业务呢?

校园创业&#xff0c;大家都知道&#xff0c;一直以来是个非常火热的话题&#xff0c;每位步入大学校园的学子们都有过在校创业的想法&#xff0c;包括我们一些有着学校资源的社会创业者们&#xff0c;早已经看好了中国高校这块巨大的市场。 在这里&#xff0c;我要跟大家分享…