pcl::PointCloud<DescriptorType>::Ptr model_descriptors(new pcl::PointCloud<DescriptorType>());如何对model_descriptors里面的内容进行输出
时间: 2023-08-06 21:06:49 浏览: 80
可以通过以下方式输出 `model_descriptors` 中的内容:
```cpp
for (std::size_t i = 0; i < model_descriptors->size(); ++i) {
const DescriptorType& descriptor = model_descriptors->at(i);
// 输出 descriptor 中的内容
std::cout << "Descriptor " << i << ": ";
for (std::size_t j = 0; j < descriptor.size(); ++j) {
std::cout << descriptor[j] << " ";
}
std::cout << std::endl;
}
```
在上述代码中,我们使用智能指针 `model_descriptors` 访问点云描述符,并针对每个描述符输出其中的数据。由于 `model_descriptors` 是一个指针,因此需要使用箭头运算符 `->` 访问其中的内容。此外,我们也可以使用 `(*model_descriptors)` 运算符获取智能指针所指向的对象,并直接访问其中的元素。
相关问题
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`,等等。最后,你需要根据实际数据特征来设置汉明距离的阈值,以便进行正确的匹配。
阅读全文