以下是基于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次以上的出现次数是可以根据实际需求进行调整的。另外,代码中的yejianyrresult分别是指向点云的指针,需要在调用函数前先进行初始化

基于pcl库遍历点云指针yejian内的点将已知的kruskal最小生成树reslut内和该点直接或间接相连的点加入指针yr直到yr内有一点在result内出现3次以上停止点加入yr的c++代码

原文地址: https://www.cveoy.top/t/topic/hQtW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录