PCL库PCLVisualizer的简单使用。
包括实例化对象,填充点云,静态显示和动态显示
#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 nowAllNum = 1000;
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;
//设置默认的坐标系
viewer2->addCoordinateSystem(1.0);
//设置固定的元素。红色是X轴,绿色是Y轴,蓝色是Z
viewer2->addLine(pcl::PointXYZ(0, 0, 0), pcl::PointXYZ(10, 0, 0), "x");
viewer2->addLine(pcl::PointXYZ(0, 0, 0), pcl::PointXYZ(0, 5, 0), "y");
viewer2->addLine(pcl::PointXYZ(0, 0, 0), pcl::PointXYZ(0, 0, 2), "z");
//设置动态刷新的元素
while (!viewer2->wasStopped())
{
//填充点云并添加
for (int i = 0; i < nowAllNum; 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
//清理
viewer2->removePointCloud("c1"); //移除特定的点云
cloud2->clear(); //清空cloud
}
printf("hello world!\n");
return 0;
}