输入原始激光点云,经过直通滤波,
在一个窗口中同时显示两个点云
输入:pcdData//lader3.PCD 文件
输出:可视化
#include <stdio.h>
#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 <pcl/filters/voxel_grid.h>
#include <pcl/filters/passthrough.h>
#include <pcl/filters/statistical_outlier_removal.h>
#define random(x1,x2) ((rand()%x2) - x1/2.0)
int main()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>); //PointXYZ 数据结构
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_medium(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PCDReader reader;
reader.read("pcdData//lader3.PCD",*cloud2);
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud(cloud2);
pass.setFilterFieldName("x");
pass.setFilterLimitsNegative(false);
pass.setFilterLimits(5, 10);
pass.filter(*cloud_medium);
//双视口
int v1(0), v2(0);
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1);//(Xmin,Ymin,Xmax,Ymax)设置窗口坐标
viewer->setBackgroundColor(0, 0, 0, v1);
viewer->addText("original", 10, 10, "v1 text", v1);//设置视口名称
viewer->addPointCloud(cloud2, "sample cloud1", v1);//添加点云
viewer->createViewPort(0.5, 0.0, 1.0, 1.0, v2);
viewer->setBackgroundColor(0.3, 0.3, 0.3, v2);
viewer->addText("after filtered", 10, 10, "v2 text", v2);
viewer->addPointCloud(cloud_medium, "sample cloud2", v2);
viewer->addCoordinateSystem(1.0,"sample cloud1");
while (!viewer->wasStopped())
{
viewer->spinOnce();
}
return 0;
}