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
Так что, похоже, учар - это тот тип, который уже предложил Берак.