C++: 从点云数据中提取排除已知容器索引的索引

以下是将点云数据'cloud'中除已知容器'std::vector idx'的索引外,其他索引保存到'std::vector idx11'内的C++代码示例:

#include <iostream>
#include <vector>

int main() {
    // 假设点云数据为 cloud,已知容器为 idx
    std::vector<int> cloud;  // 点云数据
    std::vector<int> idx;    // 已知容器

    std::vector<int> idx11;  // 保存除已知容器 idx 的索引外的索引

    // 生成示例点云数据
    for (int i = 0; i < 20; i++) {
        cloud.push_back(i);
    }

    // 生成示例已知容器 idx
    idx.push_back(2);
    idx.push_back(5);
    idx.push_back(10);

    // 遍历点云数据,将不在已知容器 idx 中的索引保存到 idx11
    for (int i = 0; i < cloud.size(); i++) {
        bool isKnownIndex = false;
        for (int j = 0; j < idx.size(); j++) {
            if (idx[j] == i) {
                isKnownIndex = true;
                break;
            }
        }
        if (!isKnownIndex) {
            idx11.push_back(i);
        }
    }

    // 打印结果
    std::cout << "idx11: ";
    for (int i = 0; i < idx11.size(); i++) {
        std::cout << idx11[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

这段代码首先生成了一个示例的点云数据'cloud'和已知容器'idx',然后遍历'cloud'中的索引,检查每个索引是否在已知容器'idx'中,如果不在,则将该索引保存到'idx11'中。最后,打印输出'idx11'的内容。

代码解释:

  1. 创建容器: 代码首先创建了三个容器: cloud 用于存储点云数据, idx 用于存储已知索引, idx11 用于存储排除已知索引后的剩余索引。
  2. 生成示例数据: 代码使用循环生成示例点云数据并添加一些索引到 idx 容器中。
  3. 遍历点云数据: 代码使用嵌套循环遍历 cloud 中的每个索引,并检查每个索引是否在 idx 中。
  4. 判断索引是否存在: 如果一个索引不在 idx 中, isKnownIndex 变量将保持为 false, 然后该索引将被添加到 idx11 中。
  5. 打印结果: 最后,代码打印出 idx11 中的所有索引。

应用场景:

在点云处理中,有时需要从点云数据中提取特定索引的点,而排除某些已知索引的点。例如,在移除噪声点时,可以使用已知容器存储噪声点的索引,然后使用本代码示例将剩余的点索引保存到新的容器中。

总结:

这段 C++ 代码示例演示了如何从点云数据中提取排除已知容器索引的索引。您可以根据自己的实际需求修改代码,例如更改点云数据和已知容器的类型,或添加额外的条件判断逻辑。


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

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