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

如何在OpenCV中创建一个描述符,该描述符可以与OpenCV中的一个DescriptorMatcher一起使用,方式如下。

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

我已经有了以下描述符类。 如何转换或创建可与DescriptorMatcher一起使用的新矩阵。 最好是BFMatcher。

 class Descriptor { public: float lxi, lyi; // Location of descriptor vector feature; Descriptor() { } Descriptor(float x, float y, vector const& f) { lxi = x; lyi = y; feature = f; } }; 

我只是在寻找有关同一问题的答案时访问这里。 但很快我发现答案很简单,你只需要制作一个垫子。

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