拷贝代码可直接运行
一、 代码
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/statistical_outlier_removal.h>
using namespace std;
pcl::PointCloud<pcl::PointXYZ>::Ptr pcl_filter_sor(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in, int num,double stdmt)
{
//统计滤波
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> outrem;//创建统计滤波对象
//参数设置
outrem.setInputCloud(cloud_in);
outrem.setMeanK(num);//附近邻近点数
outrem.setStddevMulThresh(stdmt);//标准差系数
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out(new pcl::PointCloud<pcl::PointXYZ>);
outrem.filter(*cloud_out);
return cloud_out;
}
//test------------//
int main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile(argv[1], *cloud);
auto cloud_out = pcl_filter_sor(cloud, 50,1);
cout << "采样前点数:" << cloud->size() << endl;
cout << "采样后点数:" << cloud_out->size() << endl;
system("pause");
return 0;
}