exploitGenericDescriptorMatcher_clear.cpp

sample code - Nobuyuki Shimazu, 2011-04-05 05:17 am

Download (1.3 kB)

 
1
// exploitGenericDescriptorMatcher_clear.cpp : R\[ AvP[ṼGg |Cg`܂B
2
//
3
4
#include "StdAfx.h"
5
6
// std C++
7
#include        <stdexcept>
8
#include        <vector>
9
10
// OCV
11
#include        <opencv2/core/core.hpp>
12
#include        <opencv2/highgui/highgui.hpp>
13
#include        <opencv2/features2d/features2d.hpp>
14
15
int main(int argc, char* argv[])
16
{
17
        if(argc < 2)
18
                throw std::domain_error("too few arguments");
19
20
        std::vector<cv::Mat> image;
21
        for(int i = 1; i < argc; i++)
22
                image.push_back(cv::imread(argv[i], 0));
23
24
#define                OCTAVE                        4
25
#define                OCTAVE_LAYER        2
26
        cv::Ptr<cv::FeatureDetector> fd(new cv::SurfFeatureDetector(500, OCTAVE, OCTAVE_LAYER));
27
        std::vector<std::vector<cv::KeyPoint>> kp;
28
        fd->detect(image, kp);
29
30
        cv::Ptr<cv::GenericDescriptorMatcher> dm(new cv::VectorDescriptorMatcher(
31
                new cv::SurfDescriptorExtractor(OCTAVE, OCTAVE_LAYER),
32
                new cv::BruteForceMatcher<cv::L2<float>>));
33
        dm->add(image, kp);
34
35
#ifndef        HACK_GenericDescriptorMatcher_clear
36
        dm->clear();
37
#else        //!HACK_GenericDescriptorMatcher_clear
38
        dm = new cv::VectorDescriptorMatcher(
39
                new cv::SurfDescriptorExtractor(OCTAVE, OCTAVE_LAYER),
40
                new cv::BruteForceMatcher<cv::L2<float>>);
41
#endif        //!HACK_GenericDescriptorMatcher_clear
42
43
        dm->add(image, kp);        //!!
44
45
        return 0;
46
}