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; +}