C++ 使用 PCL 库遍历点云并基于 Kruskal 最小生成树筛选点
#include <pcl\point_cloud.h> #include <pcl\point_types.h>
typedef pcl::PointXYZ PointT;
typedef pcl::PointCloud
void traversePointCloud(const PointCloud::Ptr& yejian, const PointCloud::Ptr& yr, const PointCloud::Ptr& result)
{
std::vector
// 遍历 yejian 中的每个点
for (const auto& point : yejian->points) {
// 如果 yr 内有一点在 result 中出现 3 次以上,则停止点加入 yr
if (count[point.x] >= 3)
break;
yr->push_back(point); // 将当前点加入 yr
// 遍历 result 中的每个点,更新 count
for (const auto& resPoint : result->points) {
float dist = pcl::euclideanDistance(point, resPoint);
if (dist <= 0.01) // 设定一个阈值,判断是否相连
count[point.x]++;
}
}
}
// 注意,上述代码中的阈值 0.01 和 3 次以上的出现次数是可以根据实际需求进行调整的。另外,代码中的 yejian、yr 和 result 分别是指向点云的指针,需要在调用函数前先进行初始化。
原文地址: https://www.cveoy.top/t/topic/pzzZ 著作权归作者所有。请勿转载和采集!