Как создать матрицу дескриптора в OpenCV

0

Как создать дескриптор в OpenCV, который можно использовать с одним из DescriptorMatchers в OpenCV, следующим образом.

cv::BFMatcher matcher( cv::NORM_L2, false );
std::vector< cv::DMatch > matches;
matcher.match( descriptors_1, descriptors_2, matches );

У меня уже есть класс дескрипторов. Как преобразовать или создать новую матрицу, которую можно использовать с дескриптором. Предпочтительно BFMatcher.

class Descriptor
{
    public:
    float lxi, lyi; // Location of descriptor
    vector<double> feature;

    Descriptor()
    {
    }

    Descriptor(float x, float y, vector<double> const& f)
    {
         lxi = x;
         lyi = y;
         feature = f;
    }
};
  • 0
    дескрипторами opencv являются 1d float (SIFT / SURF) или uchar (ORB; BRIEF и т. д.) Mat. так что ни ваш класс Descriptor, ни ваш вектор <double> не будут работать
  • 0
    Я мог бы бросить свой класс дескриптора. Есть ли способ, которым я могу создать новую матрицу дескриптора через мой код? Я не мог найти информацию о структуре или форме матрицы.
Показать ещё 3 комментария
Теги:
opencv
image-processing
feature-descriptor

1 ответ

1

Я просто прихожу сюда, когда ищу ответы на один и тот же вопрос. Но вскоре я нашел ответ таким простым, все, что вам нужно, это сделать "Матушку".

Например, ниже представлен некоторый дескриптор SIFT-LIKE.

cv::Mat descriptors_1(nQueries, dimemsion, CV_32F,(void*)pQueries);
cv::Mat descriptors_2(m_nDataSets, dimemsion, CV_32F,(void*)m_pData);

cv::FlannBasedMatcher matcher;
std::vector< cv::DMatch > matches;
matcher.match( descriptors_1, descriptors_2, matches );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню