| ARX 1.0 The next-generation open source augmented reality toolkit.

Loading...
Searching...
No Matches
OCVFeatureDetector.h
Go to the documentation of this file.
1/*
2 * OCVFeatureDetector.h
3 * artoolkitX
4 *
5 * This file is part of artoolkitX.
6 *
7 * artoolkitX is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * artoolkitX is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with artoolkitX. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * As a special exception, the copyright holders of this library give you
21 * permission to link this library with independent modules to produce an
22 * executable, regardless of the license terms of these independent modules, and to
23 * copy and distribute the resulting executable under terms of your choice,
24 * provided that you also meet, for each linked independent module, the terms and
25 * conditions of the license of that module. An independent module is a module
26 * which is neither derived from nor based on this library. If you modify this
27 * library, you may extend this exception to your version of the library, but you
28 * are not obligated to do so. If you do not wish to do so, delete this exception
29 * statement from your version.
30 *
31 * Copyright 2018 Realmax, Inc.
32 * Copyright 2015 Daqri, LLC.
33 * Copyright 2010-2015 ARToolworks, Inc.
34 *
35 * Author(s): Philip Lamb, Daniel Bell.
36 *
37 */
38
39#ifndef OCVFEATUREDETECTOR_H
40#define OCVFEATUREDETECTOR_H
41#include <opencv2/features2d.hpp>
42#include <vector>
43#include <map>
44#include "OCVConfig.h"
45
46 class OCVFeatureDetector
47{
48 public:
49 OCV_EXTERN OCVFeatureDetector();
50
51 bool AddDescriptorsToDictionary(int id, cv::Mat descriptors);
52
53 OCV_EXTERN std::vector<cv::KeyPoint> DetectFeatures(cv::Mat frame, cv::Mat mask);
54
55 cv::Mat CalcDescriptors(cv::Mat frame, std::vector<cv::KeyPoint> kp);
56
57 std::vector< std::vector<cv::DMatch> > MatchFeatures(cv::Mat first_desc, cv::Mat desc);
58
59 OCV_EXTERN void SetFeatureDetector(int detectorType);
60
61 private:
62 void CreateAkazeFeatureDetector();
63 void CreateORBFeatureDetector();
64 void CreateKazeFeatureDetector();
65 void CreateBriskFeatureDetector();
66
67 std::map<int, cv::Mat> _visualDictionary;
68 cv::Ptr<cv::DescriptorMatcher> _matcher;
69 cv::Ptr<cv::Feature2D> _featureDetector;
70 float _akaze_thresh;
71};
72
73#endif //OCVFEATUREDETECTOR
OCVConfig.h
OCV_EXTERN
#define OCV_EXTERN
Definition: OCVConfig.h:54
OCVFeatureDetector
Definition: OCVFeatureDetector.h:47
OCVFeatureDetector::AddDescriptorsToDictionary
bool AddDescriptorsToDictionary(int id, cv::Mat descriptors)
Definition: OCVFeatureDetector.cpp:87
OCVFeatureDetector::OCVFeatureDetector
OCV_EXTERN OCVFeatureDetector()
Definition: OCVFeatureDetector.cpp:41
OCVFeatureDetector::CalcDescriptors
cv::Mat CalcDescriptors(cv::Mat frame, std::vector< cv::KeyPoint > kp)
Definition: OCVFeatureDetector.cpp:103
OCVFeatureDetector::DetectFeatures
OCV_EXTERN std::vector< cv::KeyPoint > DetectFeatures(cv::Mat frame, cv::Mat mask)
Definition: OCVFeatureDetector.cpp:96
OCVFeatureDetector::MatchFeatures
std::vector< std::vector< cv::DMatch > > MatchFeatures(cv::Mat first_desc, cv::Mat desc)
Definition: OCVFeatureDetector.cpp:110
OCVFeatureDetector::SetFeatureDetector
OCV_EXTERN void SetFeatureDetector(int detectorType)
Definition: OCVFeatureDetector.cpp:45