opencv sift特征及匹配

来源:互联网 发布:apache api文档 编辑:程序博客网 时间:2024/05/22 03:52


sift匹配

#include "stdafx.h"#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/nonfree/features2d.hpp"   #include "opencv2/highgui/highgui.hpp"       #include <iostream>     #include "opencv2/core/core.hpp"     #include "opencv2/features2d/features2d.hpp"             #include <vector>   #include<opencv2/legacy/legacy.hpp>//新版本这个一定要加 我这里是2.4.6版本 当然链接的lib文件也要加进来void _tmain(int argc, _TCHAR* argv[]){Mat input1=imread("d:/1.jpg",1);Mat input2=imread("d:/1.jpg",1);SiftFeatureDetector detector;vector<KeyPoint> keypoint1,keypoint2;detector.detect(input1,keypoint1);Mat output1;drawKeypoints(input1,keypoint1,output1);imshow("sift_result1.jpg",output1);imwrite("sift_result1.jpg",output1);Mat output2;SiftDescriptorExtractor extractor;Mat descriptor1,descriptor2;BruteForceMatcher<L2<float>> matcher;vector<DMatch> matches;Mat img_matches;detector.detect(input2,keypoint2);drawKeypoints(input2,keypoint2,output2);imshow("out",output2);imwrite("out",output2);extractor.compute(input1,keypoint1,descriptor1);extractor.compute(input2,keypoint2,descriptor2);matcher.match(descriptor1,descriptor2,matches);drawMatches(input1,keypoint1,input2,keypoint2,matches,img_matches);imshow("matches",img_matches);imwrite("matches.jpg",img_matches);waitKey();}



SIFT特征

#include "stdafx.h"#include "highgui.h"#include "features2d/features2d.hpp"#include "opencv2/nonfree/features2d.hpp" #include <iostream>using namespace std;using namespace cv;void _tmain(int argc, _TCHAR* argv[]){Mat image=imread("d:/1.jpg");Mat iamgeGray=imread("d:/1.jpg",0);Mat descriptors;vector<KeyPoint> keypoints;SiftFeatureDetector sift2(0.06f,10.0);sift2.detect(iamgeGray,keypoints);drawKeypoints(image,keypoints,image,Scalar(255,0,255));imshow("test",image);waitKey();}


0 0
原创粉丝点击