读取PCD文件点云数据

#include //标准C++库中的输入输出类相关头文件。
#include <pcl/io/pcd_io.h> //pcd 读写类相关的头文件。
#include <pcl/point_types.h> //PCL中支持的点类型头文件。

与本程序相关的头文件声明。

pcl::PointCloudpcl::PointXYZ::Ptrcloud(newpcl::PointCloudpcl::PointXYZ);

创建一个PointCloud boost共享指针并进行实例化。

if(pcl::io::loadPCDFilepcl::PointXYZ(“test_pcd.pcd”,*cloud)==-1)//打开点云文件
{
PCL_ERROR(“Couldn’t read file test_pcd.pcd\n”);
return(-1);
}

从磁盘上加载PointCloud数据(假设test_pcd.pcd文件已经被创建了)到二进制存储块中。或者,你可以读取PointCloud2存储块(仅仅在PCL 1.x中可用)。由于点云的动态性质,我们更愿意以二进制块来读取,然后转换成我们要使用的表示方式。

sensor_msgs::PointCloud2 cloud_blob;//PointCloud2适合版本低的点云文件
pcl::io::loadPCDFile(“test_pcd.pcd”,cloud_blob);
pcl::fromROSMsg(cloud_blob,cloud);
//
sensor_msgs/PointCloud2 转换为 pcl::PointCloud

//错误说明
把二进制块读取并转换到模板化的PointCloud格式里,这里用pcl::PointXYZ作为点类型。

for(size_ti=0;ipoints.size();++i)
std::cout<<" “<points[i].x
<<” “<points[i].y
<<” "<points[i].z<<std::endl;

最后在标准输出上打印出从文件中加载的数据。
编译并运行该程序
利用光盘提供的CMakeLists.txt文件,在cmake中建立工程文件,并生成相应的可执行文件,生成可执行程序之后,就可以运行了。在cmd中键入以下命令:

…>pcd_read.exe

运行之后,可看见如图1所示的输出结果,在本例中提供的是点云文件版本0.7,所以在代码中没有涉及到PointCloud2,如果用户需要读取版本较低的pcd文件,需要替换点云读取代码为上面描述的PointCloud2读取方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值