c ++包词汇聚数组问题

时间:2014-10-29 15:34:06

标签: c++ arrays opencv

我尝试使用ORB作为我的detector创建一个Bag Of Words程序,使用extractor BruteForce作为matcher。< / p>

一切都运行良好。

但我担心的是,当我尝试集群我的描述符数组时,它会从

缩小

[32 x several thousand odd]

[32 x 1]

我也不太了解32来自哪个,这些节目目前只能读取14张图片。

代码:

cout << " -- All Other Images Features Array Size: " << allImgFeaturesUnclustered.size();

BOWKMeansTrainer allImgBowTrainer(dictionarySize, termCrit, retries, flags);
Mat allImgDictionary = allImgBowTrainer.cluster(allImgFeaturesUnclustered);
BOWImgDescriptorExtractor allImgBowImgDesExtr(extractor,matcher);
allImgBowImgDesExtr.setVocabulary(allImgDictionary);

cout << " -- All Images Dictionary Size: " << allImgDictionary.size();

在顶行,当保留原始大小时,对于所有图像的所有描述符,数组都显示为[32 x 6969]

在底线,在它们被聚集后,数组以[32 x 1]

出现

我做过这只是一张图片,它仍然从[32 x 458]转到[32 x 1]

这是对的吗?在过去的2-3周里,我一直在教自己c ++和OpenCV,所以如果这是正常的,我会道歉。

1 个答案:

答案 0 :(得分:1)

在您的情况下,似乎32是ORBdictionary size的要素大小。因此,如果您的要素尺寸为64且字典尺寸为16,那么您会看到[64 x 458][16 x 1]

请查看this