我尝试使用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,所以如果这是正常的,我会道歉。
答案 0 :(得分:1)
在您的情况下,似乎32是ORB
和dictionary size
的要素大小。因此,如果您的要素尺寸为64且字典尺寸为16,那么您会看到[64 x 458]
到[16 x 1]
。
请查看this。