如何在OpenCV中创建描述符矩阵

时间:2014-03-19 12:53:44

标签: c++ c opencv image-processing feature-descriptor

如何在OpenCV中创建一个可以与OpenCV中的DescriptorMatchers之一一起使用的描述符,方法如下。

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

我已经有了以下描述符类。如何转换或创建可与DescriptorMatcher一起使用的新矩阵。最好是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;
    }
};

1 个答案:

答案 0 :(得分:1)

我只是在寻找有关同一问题的答案时访问此处。 但很快我发现答案很简单,你只需要做一个Mat。

例如,下面是一些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 );