一、簡介
二、OpenCV中的SIFT算法接口
#include "opencv2/opencv.hpp" #include <opencv2/nonfree/nonfree.hpp>//SIFT #include <vector> #include<iostream> using namespace std; using namespace cv; void main() { Mat srcImg1 = imread("E://00.jpg"); Mat srcImg2 = imread("E://01.jpg"); //定義SIFT特征檢測類對象 SiftFeatureDetector siftDetector;//SIFT=SiftFeatureDetector=SiftDescriptorExtractor 別名//定義KeyPoint變量 vector<KeyPoint>keyPoints1; vector<KeyPoint>keyPoints2; //特征點檢測 siftDetector.detect(srcImg1, keyPoints1); siftDetector.detect(srcImg2, keyPoints2); //繪制特征點(關鍵點) Mat feature_pic1, feature_pic2; //drawKeypoints(srcImg1, keyPoints1, feature_pic1, Scalar(0, 0, 255)); drawKeypoints(srcImg2, keyPoints2, feature_pic2, Scalar(0, 0, 255)); drawKeypoints(srcImg1, keyPoints1, feature_pic1, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);//顏色隨機,帶有方向 //drawKeypoints(srcImg2, keyPoints2, feature_pic2, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS); //顯示原圖 imshow("src1", srcImg1); imshow("src2", srcImg2); //顯示結果 imshow("feature1", feature_pic1); imshow("feature2", feature_pic2); waitKey(0); }