#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/statistical_outlier_removal.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/filters/passthrough.h>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);
// 填入点云数据
pcl::PCDReader reader;
// 把路径改为自己存放文件的路径
reader.read<pcl::PointXYZ>("pig.pcd", *cloud);
pcl::PassThrough<pcl::PointXYZ>pass;
pass.setInputCloud(cloud);
pass.setFilterFieldName("z");
pass.setFilterLimits(1.0, 6.3);
pass.setNegative(false);
vector<int>indices;
pass.filter(indices);
pcl::IndicesPtr indices_ptr = make_shared<vector<int>>(indices);
pass.setIndices(indices_ptr);
pass.setFilterFieldName("x");
pass.setFilterLimits(-0.5, 0.5);
pass.setNegative(false);
vector<int>index;
pass.filter(index);
pcl::IndicesPtr index_ptr = make_shared<vector<int>>(index);
pass.setIndices(index_ptr);
pass.setFilterFieldName("y");
pass.setFilterLimits(0.3, 1.7);
pass.setNegative(true);
pass.filter(*cloud_filtered);
cout << "cloud=" << cloud->size() << endl;
cout << "cloud filter=" << cloud_filtered->size() << endl;
boost::shared_ptr<pcl::visualization::PCLVisualizer>view(new pcl::visualization::PCLVisualizer("show cloud"));
int v1(0);
view->createViewPort(0.0, 0.0, 0.5, 1.0, v1);
view->setBackgroundColor(0, 0, 0, v1);
view->addText("left viewer", 10, 10, "v1_text", v1);
int v2(0);
view->createViewPort(0.5, 0.0, 1, 1.0, v2);
view->setBackgroundColor(0.1, 0.1, 0.1, v2);
view->addText("filtered point clouds", 10, 10, "v2_text", v2);
view->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud", v1);
view->addPointCloud<pcl::PointXYZ>(cloud_filtered, "cloud_filtered", v2);
view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1, 0, 0, "sample cloud", v1);
view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 1, 0, "cloud_filtered", v2);
view->addCoordinateSystem(1.0);
view->initCameraParameters();
while (!view->wasStopped())
{
view->spinOnce(100);
//boost::this_thread::sleep(boost::posix_time::microseconds(100000));
}
return 0;
}
pcl直通滤波
最新推荐文章于 2024-04-15 21:23:03 发布