第一个代码
代码如下代码片
.
#include <iostream> //标准C++库中的输入输出类相关头文件
#include <pcl/io/pcd_io.h> //PCD读写类相关的头文件
#include <pcl/point_types.h> //PCL中支持的点类型头文件
int
main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
// 创建点云
/*
points是存储类型为PointT的点的向量。举例来说,对于一个包含XYZ数据的点云,
points成员就是由pcl::PointXYZ类型的点构成的向量
*/
cloud.width = 5;
//用点云数据集中的点数初始化width,width其实有两个含义.
//(1)对于无组织或者说无结构的点云来说,width就是指点云中点的个数
//(2)对于有结构的点云来说,width是指点云数据集一行上点的个数。
cloud.height = 1;
//用点云数据集中点的高度(就是行数)初始化height,height同样有两个函数:
//(1)对于有结构点云来说,height代表点云的总行数
//(2)对于无结构的点云来说,height值为1
cloud.is_dense = false;//是否点云中的所有数据都是有限
cloud.points.resize(cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size(); ++i)//对点云的每个点的XYZ做赋值
{
cloud.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);
}
pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);//将点云保存到PCD文件中
std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl;
//up; std::cerr --- ISO C++标准错误输出流
for (size_t i = 0; i < cloud.points.size(); ++i)//依次输出每个点的XYZ值
std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
return(0);
}