PCL 读取STL文件转换为点云

news2024/11/15 17:57:50

目录

一、概述

1.1原理

1.2实现步骤

1.3应用场景

二、代码实现

2.1关键函数

2.2完整代码

三、实现效果

3.1原始点云

3.2数据显示


PCL点云算法汇总及实战案例汇总的目录地址链接:

PCL点云算法与项目实战案例汇总(长期更新)


一、概述

1.1原理

        STL(Stereo Lithography)是一种常见的三维模型文件格式,通常用于3D打印和计算机辅助设计(CAD)中。STL文件描述了三维物体的表面网格,其中包含大量三角形面片的顶点信息。通过读取这些顶点信息,可以将STL文件转换为点云数据,供进一步处理和分析。

1.2实现步骤

  1. 使用PCL库中的 pcl::io::loadPolygonFileSTL 函数读取STL文件,并提取其表面网格的顶点信息。
  2. 将提取的顶点信息转换为点云数据。
  3. 将生成的点云数据保存为PCD文件,或进行其他进一步处理。

1.3应用场景

  • 三维模型分析:通过将STL文件转换为点云,可以进行进一步的点云处理,如噪声过滤、特征提取等。
  • 三维重建:将多个STL文件的点云数据合并,可以用于三维重建和模型修复。
  • 计算机视觉与机器人:点云数据在计算机视觉和机器人导航中广泛应用,STL文件转换为点云后可以用于路径规划、物体识别等任务。

二、代码实现

2.1关键函数

1.STL文件读取与转换:

  • pcl::io::loadPolygonFileSTL:用于读取STL文件并提取顶点信息。
  • pcl::PolygonMesh:用于存储STL文件的网格数据。
  • pcl::fromPCLPointCloud2:用于将PCL格式的点云数据从网格顶点中提取出来。

2.点云处理与保存:

  • pcl::PointCloud<pcl::PointXYZ>:用于存储生成的点云数据。
  • pcl::io::savePCDFileASCII:用于将点云数据保存为PCD文件。

2.2完整代码

#include <pcl/io/pcd_io.h>
#include <pcl/io/vtk_lib_io.h>  // 包含加载STL文件的头文件
#include <pcl/point_types.h>
#include <pcl/PolygonMesh.h>
#include <pcl/conversions.h>  // 用于点云格式转换
#include <pcl/visualization/pcl_visualizer.h>  // 包含PCL可视化的头文件

int main(int argc, char** argv)
{
    // 1. 创建PolygonMesh对象,用于存储STL文件的网格数据
    pcl::PolygonMesh mesh;

    // 2. 读取STL文件,并将网格数据存储到PolygonMesh对象中
    if (pcl::io::loadPolygonFileSTL("horse-V2w(binary).stl", mesh) == -1)  // 文件路径
    {
        PCL_ERROR("Couldn't read STL file\n");
        return -1;
    }

    // 3. 将网格数据的顶点转换为点云数据
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::fromPCLPointCloud2(mesh.cloud, *cloud);

    // 4. 保存转换后的点云数据为PCD文件
    pcl::io::savePCDFileASCII("output.pcd", *cloud);

    // 5. 输出点云数据的基本信息
    std::cout << "Loaded " << cloud->points.size() << " data points from STL file." << std::endl;
    // 6. 创建PCLVisualizer对象,用于显示点云数据
    pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    viewer->setBackgroundColor(0, 0, 0);  // 设置背景颜色为黑色
    viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");  // 将点云数据添加到可视化窗口中
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");  // 设置点的大小

    // 7. 启动可视化主循环
    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);  // 让可视化窗口刷新
    }
    return 0;
}

三、实现效果

3.1原始点云

06b4799a7cf94739b3d1fbc77e56c715.png

3.2数据显示

Loaded 19851 data points from STL file.

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结构开发笔记(八):solidworks软件(七):装配图中让摄像头绕轴旋转起来

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142176639 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

petalinux开发 添加iperf

如何把iperf编译到petalinux工程中去 目录&#xff1a; /home/xxx/7z020/project-spec/meta-user/conf 里面有一个user-rootfsconfig文件 它默认里面有 CONFIG_gpio-demo CONFIG_peekpoke 把iperf添加进去 #Note: Mention Each package in individual line #These packages w…

101.WEB渗透测试-信息收集-FOFA语法(1)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;100.WEB渗透测试-信息收集-网络空间搜索引擎shodan&#xff08;2&#xff09;-CSDN博客 F…

理解 C 语言:从基础到高级的全面介绍

前言特性指针结构体动态内存管理文件操作 习题书籍推荐本书内容 前言 C语言是一种通用的编程语言&#xff0c;广泛应用于系统编程、嵌入式系统以及各种高性能应用程序的开发。它的设计理念和语法结构为许多现代编程语言奠定了基础。本文将深入探讨 C 语言的基本概念、关键特性、…

QT 中使用QXlsx 读写文件

PC 工具中需要操作xlsx格式的数据&#xff0c;前面使用的是QAxObject&#xff0c;需要一些设置&#xff0c;还要安装office的控件或者wps的控件&#xff0c;在一些电脑上面有的时候还会有异常&#xff0c;后面发现一个好像的开源库QXls&#xff0c;发现读写的速度比以前快&…

USB摄像头视频流转RTSP流

一、VLC查看USB摄像头视频流原理&#xff1a; USB摄像头的工作原理与VLC播放其他视频文件类似&#xff0c;主要区别在于视频流的来源是实时捕获的&#xff0c;而不是预先录制的文件。如果使用VLC将USB摄像头的视频流作为RTSP服务器广播&#xff0c;需要进一步配置 二、VLC查看…

QMQ 上云方案

优质博文&#xff1a;IT-BLOG0CN 一、挑战/注意事项 【1】生产者发送消息后&#xff0c;QMQ国内外服务器进行了双向同步&#xff0c;如果消费者国内外都部署了系统&#xff0c;就会导致消息重复消费的问题&#xff1a; 目前封装了共同的SDK重构消费者的代码&#xff0c;生产者…

单片机寄存器相关知识及应用(51单片机)

在前面的STM32中我并没有直接对寄存器进行操作&#xff0c;而是通过固件库直接引用进行各个外设的配置和应用&#xff0c;现在&#xff0c;我开始进行寄存器的学习&#xff08;51单片机&#xff09;。 我们先简单看一下80C51/52的微控制头文件 <REG52.h> 一、字节寄存…

Android 提高第一次开机速度(取消系统默认手机加密)

Android刷机后第一次开机&#xff0c;系统默认是要手机加密的&#xff0c;有些机器加密就几秒钟&#xff0c;有些机器加密要30多秒甚至更长&#xff0c;严重影响了开机速度。 修改路径&#xff1a; device/qcom/xxxx/fstab_AB_variant.qcom 有一些是这个文件&#xff1a; devic…

补:在Spring Boot 当中使用 Thymeleaf 视图解析器

补&#xff1a;在Spring Boot 当中使用 Thymeleaf 视图解析器 想要在 Spring Boot 当中使用 Thymeleaf 视图&#xff0c;就需要导入相关的 jar 依赖。在 pom.xml 文件中配置 。 <!-- 引入 thymeleaf-start ,项目会自动完成配置&#xff0c;--><dependency>…

MPU6050移植DMP读出三轴角度

先决条件 MPU6050移植完成&#xff0c;能够正确读出加速度和陀螺仪原始数据 DMP移植 官方包代码复制 解压demo&#xff0c;打开motion_driver_6.12\arm\STM32F4_MD6\Projects\eMD6\core\driver&#xff0c;复制路径下的eMPL到自己工程 代码移植 需要修改的有三个文件&am…

GD32/STM32启动过程

GD32/STM32启动过程 文章目录 GD32/STM32启动过程前言一、系统架构二、自举配置三、启动文件四、启动流程总结 前言 本文以STM32F407为例简单介绍其启动过程。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、系统架构 STM32F407的系统架构如图所…

libyuv之linux编译

文章目录 一、下载源码二、编译源码三、注意事项1、银河麒麟系统&#xff08;aarch64&#xff09;&#xff08;1&#xff09;解决 armv8-adotprodi8mm 指令集支持问题&#xff08;2&#xff09;解决 armv9-asve2 指令集支持问题 一、下载源码 到GitHub网站下载https://github.…

【JAVA】Undertow的使用及性能优化,以及Undertow与Tomcat的对比

文章目录 Undertow优势Undertow使用Undertow性能优化线程池配置缓冲区和内存使用连接和请求超时禁用无关的设置编程式配置启用HTTP/2 Undertow与Tomcat的对比 更多相关内容可查看 当你进行Tomcat调优发现在怎么调都无法满足需求的时候&#xff0c;Undertow容器在性能和内存上都…

盘点2024年大家都在用的短视频剪辑工具

你现在休息的时间是不是都靠短视频来消遣&#xff1f;看着看着你就会发现短视频制作好像我也可以了吧&#xff1f;这次我就介绍一些简单好操作的短视频剪辑工具。 1.FOXIT视频剪辑 连接直达>>https://www.pdf365.cn/foxitclip/ 短视频剪辑其实也不难&#xff0c;只需…

MySql-表的内外连接

文章目录 前言一、内连接二、外连接1.左外连接2.右外连接 前言 表的内外连接跟我们上节课讲的笛卡尔积很相似。 一、内连接 格式&#xff1a;select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件&#xff1b; 例如&#xff1a;显示SMITH的名字和部门名称 二、外…

RB-SQL:利用检索LLM框架处理大型数据库和复杂多表查询的NL2SQL

NL2SQL的任务是将自然语言问题转换为SQL查询&#xff0c;以便从数据库中获取答案。现有LLM来指导SQL生成的方法在处理大型数据库和复杂多表查询时存在挑战&#xff0c;尤其是在处理冗余信息和提高提示工程效率方面。 (a) 利用大型语言模型&#xff08;LLM&#xff09;解决文本…

ctfshow-web入门-sql注入(web249-web253)nosql 注入

目录 1、web249 2、web250 3、web251 4、wen252 5、web253 1、web249 开始nosql,flag在flag中 $user $memcache->get($id); 使用 Memcache 类的 get 方法从缓存中获取数据&#xff0c;$id 是传入的键&#xff0c;用于从缓存中获取与该键对应的值&#xff0c;结果存储…

明基相机sd卡格式化还能恢复数据吗?可以这样操作

随着数字摄影的普及&#xff0c;相机SD卡已成为我们记录生活点滴的重要载体。然而&#xff0c;不小心将SD卡格式化&#xff0c;导致珍贵照片和视频瞬间消失&#xff0c;无疑是摄影爱好者的一大噩梦。面对这样的突发情况&#xff0c;许多朋友可能会感到无助与绝望。但实际上&…

【计算机组成原理】概述+数制与编码

目录 计算机组成原理概述计算机基本组成计算机系统的层次结构计算机性能指标 数制与编码进位计数制及其相互转换数据的编码与表示校验码 计算机组成原理概述 计算机基本组成 运算器、控制器、存储器、输入输出设备 运算器&#xff1a;完成数据的暂存、变换、算术运算和逻辑…