find_match_shot(pcl::PointCloudpcl::SHOT352::Ptr model_descriptors, pcl::PointCloudpcl::SHOT352::Ptr scene_descriptors, pcl::CorrespondencesPtr model_scene_corrs)如果里面的scene_descriptors是二维的布尔型描述子,如何改
时间: 2023-07-02 21:19:34 浏览: 110
如果scene_descriptors是二维的布尔型描述子,那么在函数中需要将其转换为PCL的SHOT352描述子类型。可以通过以下步骤实现:
1. 创建一个空的SHOT352描述子指针,初始化为空点云:
```
pcl::PointCloud<pcl::SHOT352>::Ptr scene_descriptors_shot(new pcl::PointCloud<pcl::SHOT352>);
scene_descriptors_shot->width = scene_descriptors->width;
scene_descriptors_shot->height = scene_descriptors->height;
scene_descriptors_shot->is_dense = scene_descriptors->is_dense;
```
2. 遍历布尔型描述子,将每个二维布尔向量转换为一个SHOT352描述子:
```
for (size_t i = 0; i < scene_descriptors->size(); ++i) {
pcl::SHOT352 descriptor;
for (int j = 0; j < 352; ++j) {
descriptor.descriptor[j] = (float)scene_descriptors->at(i)[j];
}
scene_descriptors_shot->push_back(descriptor);
}
```
3. 将转换后的SHOT352描述子传入函数中:
```
find_match_shot(model_descriptors, scene_descriptors_shot, model_scene_corrs);
```
这样就可以在函数中使用SHOT352描述子进行匹配了。
阅读全文