PCL读取pcd点云文件

2024-03-19 18:36
文章标签 读取 pcl 点云 pcd

本文主要是介绍PCL读取pcd点云文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

        随着三维数据在计算机视觉和机器人领域的广泛应用,点云数据成为了一个重要的数据形式。PCD(Point Cloud Data)是一种常见的点云数据格式,而PCL(Point Cloud Library)则是一个用于处理点云数据的强大库。在本篇博文中,我们将介绍如何使用PCL库来读取各种格式的PCD点云文件。

1 PCL简介

        PCL是一个开源的库,提供了大量用于点云处理的工具和算法,包括滤波、分割、特征提取等。它支持多种点云输入输出格式,并且提供了丰富的文档和示例,使得处理点云数据变得更加简单和高效。

2 读取PCD点云文件

        首先,我们需要安装PCL库并设置好环境。接下来,我们将以C++代码为例,演示如何使用PCL库来读取各种格式的PCD点云文件。示例点云rabbit.pcd下载地址为https://download.csdn.net/download/suiyingy/85129456。

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>int main (int argc, char** argv)
{// 读取.pcd文件pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);if (pcl::io::loadPCDFile<pcl::PointXYZ> ("../../rabbit.pcd", *cloud) == -1) //* 读入PCD文件{PCL_ERROR ("Couldn't read file example_cloud.pcd \n");return (-1);}std::cout << "Loaded "<< cloud->width * cloud->height<< " data points from rabbit.pcd with the following fields: "<< std::endl;for (size_t i = 0; i < 10; ++i)std::cout << "    " << cloud->points[i].x<< " "    << cloud->points[i].y<< " "    << cloud->points[i].z << std::endl;return (0);
}

        上述程序演示了如何使用PCL库来读取一个名为rabbit.pcd的点云文件。通过pcl::io::loadPCDFile函数,我们可以方便地将点云数据读入内存,并对数据进行进一步处理和分析。读取结果如下:

3 读取RGBXYZ格式

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>int main (int argc, char** argv)
{// 读取.pcd文件pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>);if (pcl::io::loadPCDFile<pcl::PointXYZRGB> ("../../rabbit.pcd", *cloud) == -1) //* 读入PCD文件{PCL_ERROR ("Couldn't read file example_cloud.pcd \n");return (-1);}std::cout << "Loaded "<< cloud->width * cloud->height<< " data points from rabbit.pcd with the following fields: "<< std::endl;for (size_t i = 0; i < 10; ++i)std::cout << "    " << cloud->points[i].x<< " "    << cloud->points[i].y<< " "    << cloud->points[i].z << std::endl;return (0);
}

4 CMakeLists.txt

cmake_minimum_required(VERSION 3.21)project(01_readpcd)set(CMAKE_BUILD_TYPE "Debug") # 设置PCL库的路径(假设PCL已经安装在系统中)
find_package(PCL 1.9 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})# 添加你的源文件
add_executable(${PROJECT_NAME} main.cpp)# 将PCL的DLL文件拷贝到输出目录
# file(GLOB PCL_DLLS "${PCL_ROOT}/bin/*.dll")
# file(COPY ${PCL_DLLS} DESTINATION "${CMAKE_BINARY_DIR}/Debug")message("PCL_DLL: " ${PCL_LIBRARY_DIRS})
message("PCL_DLL: " ${PCL_ROOT})
message("PCL_LIB: " ${PCL_LIBRARIES})
foreach(library ${PCL_LIBRARIES})message("PCL_LIB: ${library}")
endforeach()# 链接PCL库
target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES})

5 总结        

        除了读取.pcd格式的点云文件外,PCL库还支持多种其他格式,包括PLY、OBJ、VTK等。通过PCL库提供的相应函数,我们可以轻松地读取这些不同格式的点云数据,从而满足实际应用中的各种需求。

        在本文中,我们介绍了如何使用PCL库来读取各种格式的PCD点云文件。通过PCL库提供的丰富功能和简洁接口,我们可以高效地处理点云数据,为三维视觉和机器人领域的研究和应用提供强大的支持。希望本文能够对初学者有所帮助,也欢迎大家进一步探索PCL库的其他功能和应用场景。

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

这篇关于PCL读取pcd点云文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/826906

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

Python读取TIF文件的两种方法实现

《Python读取TIF文件的两种方法实现》本文主要介绍了Python读取TIF文件的两种方法实现,包括使用tifffile库和Pillow库逐帧读取TIFF文件,具有一定的参考价值,感兴趣的可以了解... 目录方法 1:使用 tifffile 逐帧读取安装 tifffile:逐帧读取代码:方法 2:使用

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常

一、问题描述 一位同学反馈,他写的argo存过中调用了一个自定义函数,函数会加载hdfs上的一个文件,但有些节点会报FileSystem closed异常,同时有时任务会成功,有时会失败。 二、问题分析 argodb的计算引擎是基于spark的定制化引擎,对于自定义函数的调用跟hive on spark的是一致的。udf要通过反射生成实例,然后迭代调用evaluate。通过代码分析,udf在

下载/保存/读取 文件,并转成流输出

最近对文件的操作又熟悉了下;现在记载下来:学习在于 坚持!!!不以细小而不为。 实现的是:文件的下载、文件的保存到SD卡、文件的读取输出String 类型、最后是文件转换成流输出;一整套够用了; 重点: 1:   操作网络要记得开线程; 2:更新网络获取的数据 切记用Handler机制; 3:注意代码的可读性(这里面只是保存到SD卡,在项目中切记要对SD卡的有无做判断,然后再获取路径!)

ROS1 + Realsense d455 固件安装+读取rostopic数据

目录 安装固件(一定要匹配)ROS1 wrapper 安装方法Realsense SDK 安装方法Realsense Firmware 安装方法 修改roslaunch配置文件,打开双目图像和IMU数据其他坑点参考链接 安装固件(一定要匹配) 如果你是使用ROS1获取realsense数据的话,一定要注意,SDK, Firmware的版本不是越新越好!!,这是因为intel已经不