如何在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;
}
};
我只是在寻找相同问题的答案时访问这里。但很快我发现答案很简单,你所需要的只是做一个垫子。
例如,下面是一个类似sift的描述符。
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 );