Я пытаюсь использовать обнаружение kyepoints OpenCV SIFT. Проблема в том, что я получаю странные октавы. Я посмотрел вверх, и оказалось, что это набор шкал, слоев и октав.
Итак, я добавил распаковку как в здесь
void unpackSIFTOctave(const KeyPoint& kpt, int& octave, int& layer, float& scale)
{
octave = kpt.octave & 255;
layer = (kpt.octave >> 8) & 255;
octave = octave < 128 ? octave : (-128 | octave);
scale = octave >= 0 ? 1.f/(1 << octave) : (float)(1 << -octave);
}
Проблема в том, что теперь я получаю значения от -1 до 4. Я хочу получить 3 octaves и параметр nOctaveLayers не помогают. Кто-нибудь знает, как получить октаву от 0 -> 2?