40 typename pcl::PointCloud<PointT>::Ptr cloud,
bool downSampleInputCloud,
float filterRes,
41 Eigen::Vector4f minPoint,
42 Eigen::Vector4f maxPoint,
46 typename pcl::PointCloud<PointT>::Ptr cloud,
47 float clusterTolerance,
int minSize,
int maxSize);
49 void savePcd(
typename pcl::PointCloud<PointT>::Ptr cloud, std::string file);
50 typename pcl::PointCloud<PointT>::Ptr
loadPcd(std::string file);
55 typename pcl::PointCloud<PointT>::Ptr cloud,
56 bool downSampleInputCloud,
58 Eigen::Vector4f minPoint,
59 Eigen::Vector4f maxPoint,
63 typename pcl::PointCloud<PointT>::Ptr cloud_filtered(
new pcl::PointCloud<PointT>());
64 pcl::CropBox<PointT> roi;
67 roi.setNegative(invertCropBox);
69 if (downSampleInputCloud) {
70 pcl::VoxelGrid<PointT> sor;
71 sor.setInputCloud(cloud);
72 sor.setLeafSize(filterRes, filterRes, filterRes);
73 sor.filter(*cloud_filtered);
74 roi.setInputCloud(cloud_filtered);
76 roi.setInputCloud(cloud);
78 roi.filter(*cloud_filtered);
79 return cloud_filtered;
85 typename pcl::PointCloud<PointT>::Ptr cloud,
86 float clusterTolerance,
int minSize,
int maxSize)
88 std::vector<typename pcl::PointCloud<PointT>::Ptr> clusters;
89 typename pcl::search::KdTree<PointT>::Ptr tree(
new pcl::search::KdTree<PointT>);
90 tree->setInputCloud(cloud);
92 std::vector<pcl::PointIndices> cluster_indices;
93 pcl::EuclideanClusterExtraction<PointT> ec;
94 ec.setClusterTolerance(clusterTolerance);
95 ec.setMinClusterSize(minSize);
96 ec.setMaxClusterSize(maxSize);
97 ec.setSearchMethod(tree);
98 ec.setInputCloud(cloud);
99 ec.extract(cluster_indices);
101 for (
const auto & cluster : cluster_indices) {
102 typename pcl::PointCloud<PointT>::Ptr cloud_cluster(
new pcl::PointCloud<PointT>);
103 for (
const auto & idx : cluster.indices) {
104 cloud_cluster->push_back((*cloud)[idx]);
106 cloud_cluster->width = cloud_cluster->size();
107 cloud_cluster->height = 1;
108 cloud_cluster->is_dense =
true;
109 clusters.push_back(cloud_cluster);
pcl::PointCloud< PointT >::Ptr filterCloud(typename pcl::PointCloud< PointT >::Ptr cloud, bool downSampleInputCloud, float filterRes, Eigen::Vector4f minPoint, Eigen::Vector4f maxPoint, bool invertCropBox)