PCL学习
从PCD文件中读取点云数据
loadPCDFile书中案例
代码
#include <iostream> //标准C++库中的输入输出的头文件
#include <pcl/io/pcd_io.h> //PCD读写类相关的头文件
#include <pcl/point_types.h> //PCL中支持的点类型的头文件
int
main(int argc, char** argv)
{
//创建一个PointCloud<pcl::PointXYZ> boost共享指针并进行实例化
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
//从磁盘上加载PointCloud数据到二进制存储块中,打开点云文件
if (pcl::io::loadPCDFile<pcl::PointXYZ>("test_pcd.pcd", *cloud) == -1)
{
PCL_ERROR("Couldn't read file test_pcd.pcd \n");
return (-1);
}
//默认二进制块读取转换为模块化的PointCLoud格式里pcl::PointXYZ作为点类型
std::cout << "Loaded "
<< cloud->width * cloud->height
<< " data points from test_pcd.pcd with the following fields: "
<< std::endl;
for (size_t i = 0; i < cloud->points.size(); ++i)
std::cout << " " << cloud->points[i].x
<< " " << cloud->points[i].y
<< " " << cloud->points[i].z << std::endl;//在标准输出上打印数据。
getchar();
return (0);
}
loadPCDFile例二
pcl::PointCloud<pcl::PointXYZ> cloud;
if (pcl::io::loadPCDFile<pcl::PointXYZ>("车载道路2.pcd", cloud) == -1)
{
PCL_ERROR("Cloudn't read file!");
return -1;
}
std::cout << "读取点个数: " << cloud.points.size() << std::endl;
pcl::PCDReader例子
pcl::PCDReader reader;
//创建一个`PointCloud<PointXYZ>` boost共享指针并进行实例化
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
//读取pcd文件,用指针传递给cloud
reader