pcl_wrapper/pcl_wrapper.cpp

24 lines
709 B
C++

// pcl_wrapper.cpp
#include <pcl/io/pcd_io.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/point_types.h>
extern "C" {
int filter_pcd(const char* input_path, const char* output_path, float leaf_size) {
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ>(input_path, *cloud) == -1)
return -1;
pcl::VoxelGrid<pcl::PointXYZ> sor;
sor.setInputCloud(cloud);
sor.setLeafSize(leaf_size, leaf_size, leaf_size);
sor.filter(*cloud_filtered);
pcl::io::savePCDFile(output_path, *cloud_filtered);
return 0;
}
}