pcl::PointCloud<DescriptorType>::Ptr model_descriptors(new pcl::PointCloud<DescriptorType>());如何对model_descriptors里面的内容进行输出
时间: 2023-08-06 21:06:50 浏览: 84
要输出`model_descriptors`里面的内容,可以通过遍历该点云的方式,逐个输出每个点的描述符。具体的代码可以参考下面的示例:
```c++
for (size_t i = 0; i < model_descriptors->size(); ++i) {
DescriptorType descriptor = model_descriptors->at(i);
// 输出第i个点的描述符
std::cout << "Descriptor " << i << ": " << descriptor << std::endl;
}
```
其中,`model_descriptors->size()`表示该点云中点的数量,`model_descriptors->at(i)`表示取出第i个点的描述符。这里假设`DescriptorType`支持`<<`操作符,可以直接输出描述符的值。如果`DescriptorType`不支持`<<`操作符,需要自己实现一个输出函数来输出描述符的值。
相关问题
pcl::PointCloud<pcl::SHOT352>::Ptr model_descriptors(new pcl::PointCloud<pcl::SHOT352>());如何对将model_descriptors的内容输出
您可以使用以下代码将`model_descriptors`的内容输出到控制台:
```
for (int i = 0; i < model_descriptors->size(); ++i) {
pcl::SHOT352 descriptor = model_descriptors->at(i);
std::cout << "Descriptor " << i << ": ";
for (int j = 0; j < 352; ++j) {
std::cout << descriptor.descriptor[j] << " ";
}
std::cout << std::endl;
}
```
这个代码使用了一个简单的循环来遍历`model_descriptors`中的每个描述符,并将其打印到控制台。请注意`SHOT352`描述符有352个元素,因此我们需要一个内部循环来遍历每个元素并将其打印到控制台。
pcl::PointCloud<pcl::SHOT352>::Ptr model_descriptors如果model_descriptors是布尔型描述子,要怎么改
如果 `model_descriptors` 变量是布尔型描述子,则需要将 `pcl::SHOT352` 类型的指针改为 `pcl::PointCloud<pcl::BINARY>::Ptr` 类型的指针,如下所示:
```
pcl::PointCloud<pcl::BINARY>::Ptr model_descriptors(new pcl::PointCloud<pcl::BINARY>());
```
然后,你需要在代码中将 `SHOT352` 相关的部分修改为 `BINARY` 相关的部分。例如,将 `pcl::SHOT352::Ptr` 修改为 `pcl::BINARY::Ptr`,将 `pcl::KdTreeFLANN<pcl::SHOT352>` 修改为 `pcl::KdTreeFLANN<pcl::BINARY>`,将 `pcl::CorrespondencesPtr` 修改为 `pcl::CorrespondencesPtr`,等等。最后,你需要根据实际数据特征来设置汉明距离的阈值,以便进行正确的匹配。
阅读全文