运行环境:opencv2.3.1+vs2010,在opencv中有封装好的sift类库,可直接调用,实现sift只需简单几行代码,有详细注释。
//SIFT
#include <tchar.h>
#include "highgui.h"
#include "features2d/features2d.hpp"
#include <iostream>
using namespace std;
using namespace cv;
void _tmain(int argc, _TCHAR* argv[])
{
/*1. input images*/
Mat input1=imread("church01.jpg",1);//read image1
Mat input2=imread("church02.jpg",1);//read image2
/*2. feature detector*/
SiftFeatureDetector detector;//define sift detector
vector<KeyPoint> keypoint1,keypoint2;//define kepoint vector
detector.detect(input1,keypoint1);//extract features of image1
Mat output1;
drawKeypoints(input1,keypoint1,output1);//draw features of image1
imshow("sift_result1.jpg",output1);
imwrite("sift_result1.jpg",output1);
detector.detect(input2,keypoint2);//extract features of image2
Mat output2;
drawKeypoints(