2014-10-29 3 views
1

Я пытаюсь создать мешок слов программы, используя ORB как мой detector и extractor с BruteForce для matcher.C++ мешка слов Кластерированных Array Size Issue

Все работает нормально.

Но мое дело в том, что, когда я пытаюсь Кластер мой массив описателей, она сжимается от

[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

В вашем случае, кажется, что 32 - оба размера объекта ORB и dictionary size. Поэтому, если размер вашей функции был 64, а размер словаря - 16, то вы увидите [64 x 458] до [16 x 1].

Пожалуйста, взгляните на this.

+0

Благодарим вас за эту ссылку, очень полезно. – MLMLTL