/* g++ -o keyp `pkg-config --libs opencv` keyp.cpp */ #include #include #include "opencv2/opencv.hpp" using namespace std; using namespace cv; int main(int argc, char *argv[]) { if (argc != 3) { cout << "usage:" << endl << argv[0] << " image1 image2" << endl; return 1; } Mat img1, img2, img3; vector keyps1, keyps2; Mat descs1, descs2; vector matches; Ptr fd; Ptr de; Ptr dm; img1 = imread(argv[1]); img2 = imread(argv[2]); //cvtColor(img1, img1, CV_BGR2GRAY); //cvtColor(img2, img2, CV_BGR2GRAY); // FAST, STAR, SIFT, SURF, ORB, BRISK, MSER, GFTT, HARRIS, Dense, SimpleBlob fd = FeatureDetector::create("SIFT"); fd->detect(img1, keyps1); fd->detect(img2, keyps2); // SIFT, SURF, BRIEF, BRISK, ORB, FREAK de = DescriptorExtractor::create("SIFT"); de->compute(img1, keyps1, descs1); de->compute(img2, keyps2, descs2); // BruteForce, BruteForce-L1, BruteForce-Hamming, BruteForce-Hamming(2), FlannBased dm = DescriptorMatcher::create("FlannBased"); dm->match(descs1, descs2, matches); cout << matches.size() << endl; return 0; }