步骤:
1、imread()读取图片;
2、特征点检测器:检测每个图片的 Oriented FAST 角点 detector->detect();
3、根据各图片角点位置计算 BRIEF 描述子descriptor->compute ( img_1, keypoints_1, descriptors_1 );
4、计算两幅图像的 Hamming 距离matcher->match ( descriptors_1, descriptors_2, matches );;
5、找出所有匹配之间的最小距离和最大距离,选出优化的匹配点;
6、drawMatches()绘制匹配结果。
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main ( int argc, char** argv )
{
if ( argc != 3 )
{
cout<<"usage: feature_extraction img1 img2"<<endl;
return 1;
}
//-- 读取图像
Mat img_1 = imread ( argv[1], CV_LOAD_IMAGE_COLOR );//可以是RGB类型:CV_LOAD_IMAGE_COLOR
Mat img_2 = imread ( argv[2], CV_LOAD_IMAGE_COLOR );
//-- 初始化
std::vector<KeyPoint> keypoints_1, keypoints_2;
Mat descrip