#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>
#include <pcl/filters/passthrough.h>
boost::shared_ptr<pcl::visualization::PCLVisualizer> simpleVis(pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud) {boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer ("3D viewer"));viewer->setBackgroundColor(0, 0, 0);viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_FONT_SIZE, 3, "sample");viewer->initCameraParameters();return (viewer);}
int main() {std::string path = "E:\\c++Code\\pcl\\ConsoleApplication1\\data\\filters\\table_scene_lms400.pcd";pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr final(new pcl::PointCloud<pcl::PointXYZ>);if (pcl::io::loadPCDFile<pcl::PointXYZ>(path, *cloud) == -1) {PCL_ERROR("Couldn't read file test_pcd.pcd \n");return (-1);}pcl::PassThrough<pcl::PointXYZ> pass;pass.setInputCloud(cloud); pass.setFilterFieldName("z"); pass.setFilterLimits(-1.5, -1.3);pass.filter(*final);boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer1;boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer2;viewer1 = simpleVis(cloud);viewer2 = simpleVis(final);while (!viewer1->wasStopped()){viewer1->spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(100000));}while (!viewer2->wasStopped()){viewer2->spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(100000));}
}
