当前位置: 首页 > news >正文

PCL 读取和保存点云

目录

一、概述

1.1原理

1.2实现步骤

二、代码实现

2.1关键函数

2.2完整代码

三、实现效果


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

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


一、概述

1.1原理

        PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

1.2实现步骤

  1. 读取点云:使用 PCL 的 pcl::io::loadPCDFile pcl::io::loadPLYFile 函数读取点云数据文件(如 PCD 或 PLY 文件)。
  2. 显示点云:使用 PCL 的 pcl::visualization::PCLVisualizer 类创建一个可视化窗口,并将点云添加到该窗口中。
  3. 写入点云:使用 pcl::io::savePCDFilepcl::io::savePLYFile 函数将处理后的点云数据保存为文件。

二、代码实现

2.1关键函数

1.读取点云:
        a.pcl::io::loadPCDFile<pcl::PointXYZ>:从 PCD 文件读取点云数据。
        b.pcl::io::loadPLYFile<pcl::PointXYZ>:从 PLY 文件读取点云数据。
2.显示点云:
        a.pcl::visualization::PCLVisualizer:创建可视化对象。
        b.addPointCloud<pcl::PointXYZ>:将点云数据添加到可视化对象中进行显示。
3.写入点云:
        a.pcl::io::savePCDFile<pcl::PointXYZ>:将点云数据保存为 PCD 文件。
        b.pcl::io::savePLYFile<pcl::PointXYZ>:将点云数据保存为 PLY 文件。

2.2完整代码

#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>int main(int argc, char** argv)
{// 1. 创建一个 PointCloud 智能指针对象pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);// 2. 读取点云数据文件 (PCD 或 PLY)if (pcl::io::loadPCDFile<pcl::PointXYZ>("C:\\cloud_data\\pcd_data\\bunny.pcd", *cloud) == -1) // 对于 PCD 文件{PCL_ERROR("Couldn't read the PCD file \n");return (-1);}// 如果读取 PLY 文件// if (pcl::io::loadPLYFile<pcl::PointXYZ>("input.ply", *cloud) == -1)// {//     PCL_ERROR("Couldn't read the PLY file \n");//     return (-1);// }// 3. 初始化可视化对象pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(0, 0, 0); // 设置背景色为黑色// 4. 将点云添加到可视化窗口中viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");// 5. 可选设置:调整点的尺寸viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");// 6. 启动可视化窗口循环while (!viewer->wasStopped()){viewer->spinOnce(100);}// 7. 将点云数据保存到文件中pcl::io::savePCDFile<pcl::PointXYZ>("output.pcd", *cloud); // 保存为 PCD 文件// pcl::io::savePLYFile<pcl::PointXYZ>("output.ply", *cloud); // 保存为 PLY 文件return 0;
}

三、实现效果

e4c21e33ef824fe4a8cb05584c923285.png

 

 

 

 

相关文章:

PCL 读取和保存点云

目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概述 1.1原理 PCL (Point Cloud Library) 是…...

js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】

js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】 描述 概述 在前端开发中&#xff0c;遇到TypeError: Cannot read properties of null (reading indexOf)这类错误并不罕见。这个错误通常表明你试图在一个null值上调用indexOf方法&#xff0c…...

微信小程序-formData使用

作者&#xff1a;fyupeng 技术专栏&#xff1a;☞ https://github.com/fyupeng 项目地址&#xff1a;☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 一、介绍 在小程序中使用formdata上传数据&#xff0c;可实现多文件上传 跟浏览器中的FormData对象类…...

潜在语义分析(Latent Semantic Analysis,LSA)—无监督学习方法、非概率模型、判别模型、线性模型、非参数化模型、批量学习

定义 输入: X [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋮ ⋮ x m 1 x m 2 ⋯ x m n ] , 文本集合 D { d 1 , d 2 , ⋯ , d n } , 单词集合 W { ω 1 , ω 2 , ⋯ , ω m } , x i j : 单词 ω i 在文本 d j 中出现的频数或权值 X\left[ \begin{array}{cccc} x_{11} …...

【安全漏洞】MySQL 8.0.33 、CVE-2023-22102

mysql-connector-java:jar:8.0.33已经重新定位到mysql-connector-j:jar:8.0.33 安全漏洞描述 在SBOM扫描过程中&#xff0c;检测到mysql-connector-j:8.0.33存在如下高危安全漏洞&#xff1a; CVE-2023-22102&#xff1a;Oracle MySQL Connectors 8.1.0 版本之前存在安全漏洞&…...

Flutter 响应式框架

一、简介 响应式框架会自动使用户界面适应不同的屏幕大小。创建你的用户界面一次&#xff0c;让它显示完美的像素在移动&#xff0c;平板电脑和桌面&#xff01; 1.1 问题 支持多种显示尺寸通常意味着要多次重新创建同一布局。在传统的Bootstrap方法下&#xff0c;构建响应式…...

电脑AE特效软件 After Effects软件2017中文版下载安装指南 (Win/Mac)

电脑ae特效软件 After Effects软件2017中文版下载安装win/... 电脑AE特效软件 After Effects软件2017中文版下载安装指南 (Win/Mac) Adobe After Effects 2017 是一款功能强大的视频后期处理软件&#xff0c;广泛应用于影视特效制作、动态图形设计、视觉效果合成等领域。其丰…...

C#中的装箱和拆箱是什么

在 C# 中&#xff0c;装箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09;是与值类型和引用类型相关的概念&#xff0c;涉及到值类型的数据在托管堆&#xff08;Heap&#xff09;上的存储方式。 装箱&#xff08;Boxing&#xff09; 装箱是指将值类型…...

在 Debian 12 上安装中文五笔输入法

在 Debian 12 上安装中文五笔输入法&#xff0c;你可以通过以下步骤进行&#xff1a; 更新系统包列表&#xff1a; 打开终端&#xff0c;首先更新你的系统包列表&#xff1a; sudo apt update安装输入法框架&#xff1a; 安装 fcitx5 输入法框架&#xff1a; sudo apt install …...

整流器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

整流器制造行业作为制造业的重要组成部分&#xff0c;也在积极探索数字化转型的新路径。整流器&#xff0c;作为电力电子领域的关键元件&#xff0c;广泛应用于通信、工业控制、新能源等多个领域&#xff0c;其制造过程的智能化升级不仅关乎产品性能的提升&#xff0c;更是推动…...

算法知识点——常用输入输出数据的方式

如果输入的每组数据的结果不相互干扰的话&#xff0c;就可以在本次操作的时候将该组数据的相关结果进行输出。 1、n组输入输出(n确定&#xff09; scanf("%d",&n); while(n--) {scanf("%d %d",&a,&b); printf("%d %d\n",a,b);}cin…...

如何构建大数据治理平台,助力企业数据决策

建设背景 &#xff08;1&#xff09;什么是数据资产 资产由企业及组织拥有和控制&#xff0c;能够提供增值服务、带来经济利益的重要资源。 资产不但需要管理&#xff0c; 更需要运营。 &#xff08;2&#xff09;数据资产运营中的问题 数据资产运营中存在的问题主要包括以下…...

Playwright与Selenium的对比:谁是更适合你的自动化测试工具?

在自动化测试领域&#xff0c;Selenium 一直是行业的标杆工具。它功能强大、支持多浏览器、广泛应用于各类项目中。然而&#xff0c;随着技术的发展&#xff0c;新的工具不断涌现&#xff0c;Playwright 作为其中的佼佼者&#xff0c;以其现代化的设计和强大的特性吸引了越来越…...

Netty 相关问题

传统网络编程存在的问题 传统网络编程存在以下问题&#xff1a; 线程创建开销&#xff1a;在Java中&#xff0c;创建线程需要调用操作系统API&#xff0c;这会消耗资源和时间。内存占用高&#xff1a;线程本身占用内存&#xff0c;创建过多线程会导致内存资源紧张。CPU使用率…...

JAVA中线程池的详解

1.概念 顾名思义&#xff0c;线程池就是管理一系列线程的资源池&#xff0c;其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 这里借用《Java 并发编程的艺术》书中的部分内容来总结一下使用线程池的好处&#x…...

【PyTorch单点知识】深入了解 nn.ModuleList和 nn.ParameterList模块:灵活构建动态网络结构

文章目录 0. 前言1. 为什么需要 nn.ModuleList 和 nn.ParameterList&#xff1f;2. nn.ModuleList&#xff1a;管理模块的列表2.1 什么是 nn.ModuleList&#xff1f;2.2 创建 nn.ModuleList2.3 动态添加或删除层 3. nn.ParameterList&#xff1a;管理参数列表3.1 什么是 nn.Par…...

vscode创建Python虚拟环境无法激活问题处理

系统环境 win7环境,Python3.7,VScode1.70.3 问题报错: PS C:\Users\Administrator\PycharmProjects\websites> .\venv\Scripts\activate 无法加载文件 C:\Users\Administrator\PycharmProjects\websites\venv\Scripts\Activate.ps1,因为在此系统中禁止执行脚本。有关…...

【Go】Go语言中的基本数据类型与类型转换

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

【Python中导入Tkinter模块创建计算器界面】

使用Tkinter库创建计算器界面涉及布局多个控件&#xff08;如按钮、输入框和标签&#xff09;以形成一个用户友好的界面。以下是一个基本的步骤和示例代码&#xff0c;展示了如何使用Tkinter创建一个简单的计算器界面。 步骤 导入Tkinter库&#xff1a;首先&#xff0c;你需要…...

中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速

鸿蒙生态大势所趋&#xff0c;各种应用适配加速 近日&#xff0c;华为纯血鸿蒙系统&#xff08;HarmonyOS NEXT&#xff09;再度引发市场高度关注。据媒体消息&#xff0c;鸿蒙NEXT Beta版将在9月24日对Mate 60系列、X5系列、Pura70系列等16款旗舰机型进行推送&#xff0c;这已…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...