From 2b116981b7d4881a6211ce482be4b21ad32ff635 Mon Sep 17 00:00:00 2001 From: Victor Erukhimov Date: Sat, 12 Jun 2010 05:45:28 +0000 Subject: [PATCH] Added a simple sample for descriptor matching --- samples/cpp/matcher_simple.cpp | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 samples/cpp/matcher_simple.cpp diff --git a/samples/cpp/matcher_simple.cpp b/samples/cpp/matcher_simple.cpp new file mode 100644 index 0000000000..74c791b395 --- /dev/null +++ b/samples/cpp/matcher_simple.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include + +using namespace cv; + +int main(int argc, char** argv) +{ + if(argc != 3) + { + printf("Usage: matches_simple \n"); + return -1; + } + + Mat img1 = imread(argv[1]); + Mat img2 = imread(argv[2]); + if(img1.empty() || img2.empty()) + { + printf("Can't read one of the images\n"); + return -1; + } + + // detecting keypoints + SurfFeatureDetector detector(400); + vector keypoints1, keypoints2; + detector.detect(img1, keypoints1); + detector.detect(img2, keypoints2); + + // computing descriptors + SurfDescriptorExtractor extractor; + Mat descriptors1, descriptors2; + extractor.compute(img1, keypoints1, descriptors1); + extractor.compute(img2, keypoints2, descriptors2); + + // matching descriptors + BruteForceMatcher > matcher; + vector matches; + matcher.add(descriptors1); + matcher.match(descriptors2, matches); + + // drawing the results + namedWindow("matches", 1); + Mat img_matches; + drawMatches(img1, img2, keypoints1, keypoints2, matches, vector(), img_matches); + imshow("matches", img_matches); + waitKey(0); + + return 0; +}