Freak Descriptor Тип строки

У меня есть следующий код:

//newImg is a mat of an image and orderedKeyPoint is the result from Fast
cv::FREAK extractor;
cv::Mat queryDescriptors;
extractor.compute(newImg, orderedKeyPoint, queryDescriptors);

Я пытаюсь получить доступ к отдельным странным дескрипторам, используя queryDescriptors.at(r,0), где r - произвольное допустимое значение строки, но я не уверен в типе. Во всей документации говорится, что это просто дескриптор, но это тип Mat или double или что-то еще? Это лучший способ сделать это?

cv::Mat descriptor2 = queryDescriptors.at<cv::Mat>(2,0);

Я хотел бы иметь возможность восстановить queryDescriptors (Mat of descriptors) из отдельных дескрипторов, взяв их и поместив их в значения строк cv::Mat, например:

queryDescriptors.at<cv::Mat>(2,0) = descriptor2;

Любая помощь или понимание будет принята с благодарностью,

Исаак

2 ответа

Решение

Дескриптор FREAK - это Uchar Mat с 64 столбцами и numkeypoints.

Итак, чтобы добраться до элемента этого:

uchar elm = descriptor.at<uchar>(row,col);

где row - идентификатор ключевой точки, а col - идентификатор элемента.

Если вы заглянули в \opencv\modules\features2d\src\freak.cpp, вы можете увидеть:

int FREAK::descriptorSize() const
{
    return FREAK_NB_PAIRS / 8; // descriptor length in bytes
}

int FREAK::descriptorType() const
{
    return CV_8U;
}

int FREAK::defaultNorm() const
{
    return NORM_HAMMING;
}

} // END NAMESPACE CV

Так что, похоже, учар - это тот тип, который уже предложил Берак.

Другие вопросы по тегам