特征检测与匹配(3):使用FLANN进行特征点匹配
一,FlannBasedMatcher类的简单分析;
二,找到最佳匹配:DescriptorMatcher::match方法;
三,示例程序:使用FLANN进行特征点匹配;
四,综合示例程序:FLANN结合SURF进行关键点的描述和匹配;
五,综合示例程序:SIFT配合暴力匹配进行关键点描述和提取;
一,FlannBasedMatcher类的简单分析
在 OpenCV源代码中,找到FlannBasedMatcher类的脉络如下。
可以发现 FlannBasedMatcher类也是继承自 DescriptorMatcher,并且同样主要使用来自 DescriptorMatcher类的match方法进行匹配。下面,让我们讲解一下此类方法的用法。
二,找到最佳匹配:DescriptorMatcher::match方法
DescriptorMatcher:.match()函数从每个描述符查询集中找到最佳匹配,有两个版本的源码,下面用注释对其进行讲解。
三,示例程序:使用FLANN进行特征点匹配
#include<opencv2/opencv.hpp>
#include<iostream>
#include<opencv2/xfeatures2d.hpp>
#include<math.h>
using namespace cv;
using namespace std;
using namespace cv::xfeatures2d;
//检测计算和绘制时,源图(img1)在前面,目标图像(img2)在后面
Mat img1, img2;
int main(int argc, char** argv)
{
img1 = imread("E:/pictures/2.jpg", 0);
img2 = imread("E:/pictures/3.2