读取PCD格式的文件

在本教程中,我们将学习如何从PCD文件中读取点云数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

int main(int argc,char** argv){
//创建一个格式为PointXY的空点云对象,用于盛放读入的.pcd数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
//在下面的if函数中,我们尝试读取.pcd文件,如果读取成功,则将其放入cloud中,否则就报错退出程序
if(pcl::io::loadPCDFile<pcl::PointXYZ>("test_pcd.pcd".*cloud)==-1){
PCL_ERROR("cloud not read file test_pcd.pcd \n");
return (-1);
}
/*我们也可以读取PCLPointCloud2类型,而且由于点云的动态性质,我们更希望它们读取为二进制的形式, 然后将其转换为我们想要的点云形式,示例代码如下:
pcl::PointCloud2 cloud_blob;//创建空对象盛饭读入的二进制点云数据
pcl::io::loadPCDFile("test_pcd.pcd",cloud_blob);//将读入的点云数据存放至前面定义的空对象中
pcl::formPCLPointCloud2(cloud_blob,*cloud);//将点云数据转换为XYZ格式的点云
*/
std::cout<<"loaded"
<<cloud->width*cloud->cloud->height
<<" data points from test_pcd.pcd with the following fields"
<<std::endl;
for(const auto& point:*cloud){
std::cout << "x:"<<point.x
<<"y:"<<point.y
<<"z:"<<point.z<<std::endl;
}
return (0);
}

感谢您的阅读。 🙏 关于转载请看这里