随机生成PCL点云,写入到PCD文件中并保存
#include <stdio.h>
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
#include<boost/thread.hpp>
#include<boost/timer.hpp>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <opencv2/opencv.hpp>
#define random(x1,x2) ((rand()%x2) - x1/2.0)
int main()
{
int pointNum = 1000; //每一帧的点个数
int frameNum = 10; //帧数目
int intName = 0; //PCD文件名称索引
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>); //PointXYZ 数据结构
boost::shared_ptr<pcl::visualization::PCLVisualizer>viewer2 (new pcl::visualization::PCLVisualizer("line Viewer")); //PCLVisualizer 可视化类
pcl::PointXYZ p;
pcl::PCDWriter writer;
//设置默认的坐标系
viewer2->addCoordinateSystem(1.0);
while (frameNum--)
{
std::string filename("pcdData//test" + std::to_string(intName) + ".pcd");
//填充点云并添加
for (int i = 0; i < pointNum; i++)
{
p.x = random(0,10); //0.1--5
p.y = random(0, 20);
p.z = random(0, 40);
cloud2->push_back(p);
}
viewer2->addPointCloud(cloud2,"c1"); //添加特定的点云
//可视化
viewer2->spinOnce(30); //可视化30ms
writer.write(filename, *cloud2); //保存
intName++;
//清理
viewer2->removePointCloud("c1"); //移除特定的点云
cloud2->clear(); //清空cloud
}
printf("hello world!\n");
return 0;
}