C++: 从点云数据中提取排除已知容器索引的索引
C++: 从点云数据中提取排除已知容器索引的索引
以下是将点云数据'cloud'中除已知容器'std::vector
#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'的内容。
代码解释:
- 创建容器: 代码首先创建了三个容器:
cloud用于存储点云数据,idx用于存储已知索引,idx11用于存储排除已知索引后的剩余索引。 - 生成示例数据: 代码使用循环生成示例点云数据并添加一些索引到
idx容器中。 - 遍历点云数据: 代码使用嵌套循环遍历
cloud中的每个索引,并检查每个索引是否在idx中。 - 判断索引是否存在: 如果一个索引不在
idx中,isKnownIndex变量将保持为false, 然后该索引将被添加到idx11中。 - 打印结果: 最后,代码打印出
idx11中的所有索引。
应用场景:
在点云处理中,有时需要从点云数据中提取特定索引的点,而排除某些已知索引的点。例如,在移除噪声点时,可以使用已知容器存储噪声点的索引,然后使用本代码示例将剩余的点索引保存到新的容器中。
总结:
这段 C++ 代码示例演示了如何从点云数据中提取排除已知容器索引的索引。您可以根据自己的实际需求修改代码,例如更改点云数据和已知容器的类型,或添加额外的条件判断逻辑。
原文地址: https://www.cveoy.top/t/topic/pNfA 著作权归作者所有。请勿转载和采集!