基于pcl库遍历点云指针yejian内的点将已知的kruskal最小生成树reslut内和该点直接或间接相连的点加入指针yr直到yr内有一点在result内出现3次以上停止点加入yr的c++代码
以下是基于pcl库遍历点云指针yejian内的点,将已知的kruskal最小生成树reslut内和该点直接或间接相连的点加入指针yr直到yr内有一点在result内出现3次以上,停止点加入yr的C++代码示例:
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
typedef pcl::PointXYZ PointT;
typedef pcl::PointCloud<PointT> PointCloud;
void traversePointCloud(const PointCloud::Ptr& yejian, const PointCloud::Ptr& yr, const PointCloud::Ptr& result)
{
std::vector<int> count(yejian->size(), 0); // 用于记录yr中点在result中出现的次数
// 遍历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/hQtW 著作权归作者所有。请勿转载和采集!