24 lines
709 B
C++
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;
|
||
|
}
|
||
|
|
||
|
}
|