当前位置: 首页 > 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

 

 

 

 

http://www.lryc.cn/news/436570.html

相关文章:

  • js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】
  • 微信小程序-formData使用
  • 潜在语义分析(Latent Semantic Analysis,LSA)—无监督学习方法、非概率模型、判别模型、线性模型、非参数化模型、批量学习
  • 【安全漏洞】MySQL 8.0.33 、CVE-2023-22102
  • Flutter 响应式框架
  • 电脑AE特效软件 After Effects软件2017中文版下载安装指南 (Win/Mac)
  • C#中的装箱和拆箱是什么
  • 在 Debian 12 上安装中文五笔输入法
  • 整流器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 算法知识点——常用输入输出数据的方式
  • 如何构建大数据治理平台,助力企业数据决策
  • Playwright与Selenium的对比:谁是更适合你的自动化测试工具?
  • Netty 相关问题
  • JAVA中线程池的详解
  • 【PyTorch单点知识】深入了解 nn.ModuleList和 nn.ParameterList模块:灵活构建动态网络结构
  • vscode创建Python虚拟环境无法激活问题处理
  • 【Go】Go语言中的基本数据类型与类型转换
  • 【Python中导入Tkinter模块创建计算器界面】
  • 中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速
  • 如何实现视频数据的PES打包和传输?
  • 【软考】程序设计语言基础
  • 野指针与空指针的异同
  • 虚拟存储器“大观”,讲解核心逻辑知识和408大题方法
  • 【AI赋能医学】基于深度学习和HRV特征的多类别心电图分类
  • 速盾:做外贸用高防cdn需要国外节点的吗?
  • 单片机中为什么要使用5v转3.3v,不直接使用3.3V电压
  • SpringBoot项目请求返回json空字段过滤
  • linux下进程详解
  • 春招审核流程优化:Spring Boot系统设计
  • QT:音视频播放器