1. 程式人生 > >BRISK特徵提取與檢測

BRISK特徵提取與檢測

#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\features2d\features2d.hpp>
#include<opencv2\calib3d\calib3d.hpp>

#include<iostream>

using namespace std;
using namespace cv;

int main(int argc,char* argv[])
{
	Mat queryImage,trainImage;
	queryImage=imread("1.jpg",IMREAD_COLOR);
	trainImage=imread("2.jpg",IMREAD_COLOR);
	
	vector<KeyPoint> queryKeyPoint,trainKeyPoint;

	Mat queryDescriptor,trainDescriptor;
	
	int thresh=60;
	int octave=4;
	float patternScale=1.0f;

	BRISK briskDetector(thresh,octave,patternScale);
	briskDetector.detect(queryImage,queryKeyPoint);
	briskDetector.compute(queryImage,queryKeyPoint,queryDescriptor);
	
	briskDetector.detect(trainImage,trainKeyPoint);
	briskDetector.compute(trainImage,trainKeyPoint,trainDescriptor);
	
	drawKeypoints(queryImage,queryKeyPoint,queryImage);
	drawKeypoints(trainImage,trainKeyPoint,trainImage);

	imshow("query",queryImage);
	imshow("train",trainImage);

	vector<DMatch> matches;
	BFMatcher matcher(NORM_HAMMING);

	matcher.match(queryDescriptor,trainDescriptor,matches);

	Mat image_match;
	
	drawMatches(queryImage,queryKeyPoint,trainImage,trainKeyPoint,matches,image_match);

	imshow("image_match",image_match);
	
	waitKey(0);
	return 0;
}