EstervQrCode 2.0.0
Library for qr code manipulation
Loading...
Searching...
No Matches
params.h
1/***********************************************************************
2 * Software License Agreement (BSD License)
3 *
4 * Copyright 2008-2011 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
5 * Copyright 2008-2011 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *************************************************************************/
28
29
30#ifndef OPENCV_FLANN_PARAMS_H_
31#define OPENCV_FLANN_PARAMS_H_
32
34
35#include "any.h"
36#include "general.h"
37#include <iostream>
38#include <map>
39
40
41namespace cvflann
42{
43
44typedef std::map<cv::String, any> IndexParams;
45
46struct SearchParams : public IndexParams
47{
48 SearchParams(int checks = 32, float eps = 0, bool sorted = true )
49 {
50 init(checks, eps, sorted, false);
51 }
52
53 SearchParams(int checks, float eps, bool sorted, bool explore_all_trees )
54 {
55 init(checks, eps, sorted, explore_all_trees);
56 }
57
58 void init(int checks = 32, float eps = 0, bool sorted = true, bool explore_all_trees = false )
59 {
60 // how many leafs to visit when searching for neighbours (-1 for unlimited)
61 (*this)["checks"] = checks;
62 // search for eps-approximate neighbours (default: 0)
63 (*this)["eps"] = eps;
64 // only for radius search, require neighbours sorted by distance (default: true)
65 (*this)["sorted"] = sorted;
66 // if false, search stops at the tree reaching the number of max checks (original behavior).
67 // When true, we do a descent in each tree and. Like before the alternative paths
68 // stored in the heap are not be processed further when max checks is reached.
69 (*this)["explore_all_trees"] = explore_all_trees;
70 }
71};
72
73
74template<typename T>
75T get_param(const IndexParams& params, const cv::String& name, const T& default_value)
76{
77 IndexParams::const_iterator it = params.find(name);
78 if (it != params.end()) {
79 try {
80 return it->second.cast<T>();
81 } catch (const std::exception& e) {
83 ("FLANN '%s' param type mismatch: %s", name.c_str(), e.what()));
84 }
85 }
86 else {
87 return default_value;
88 }
89}
90
91template<typename T>
92T get_param(const IndexParams& params, const cv::String& name)
93{
94 IndexParams::const_iterator it = params.find(name);
95 if (it != params.end()) {
96 try {
97 return it->second.cast<T>();
98 } catch (const std::exception& e) {
100 ("FLANN '%s' param type mismatch: %s", name.c_str(), e.what()));
101 }
102 }
103 else {
104 FLANN_THROW(cv::Error::StsBadArg, cv::String("Missing parameter '")+name+cv::String("' in the parameters given"));
105 }
106}
107
108inline void print_params(const IndexParams& params, std::ostream& stream)
109{
110 IndexParams::const_iterator it;
111
112 for(it=params.begin(); it!=params.end(); ++it) {
113 stream << it->first << " : " << it->second << std::endl;
114 }
115}
116
117inline void print_params(const IndexParams& params)
118{
119 print_params(params, std::cout);
120}
121
122}
123
125
126#endif /* OPENCV_FLANN_PARAMS_H_ */
T c_str(T... args)
T endl(T... args)
InputArrayOfArrays InputArrayOfArrays InputOutputArray InputOutputArray InputOutputArray InputOutputArray Size InputOutputArray InputOutputArray T
Definition calib3d.hpp:1867
#define CV_Error_(code, args)
Call the error handler.
Definition base.hpp:334
int CvMemStorage int double eps
Definition imgproc_c.h:493
@ StsBadArg
function arg/param is bad
Definition base.hpp:74
Definition flann.hpp:60
T what(T... args)