github.com/kaydxh/golang@v0.0.131/pkg/gocv/cgo/third_path/opencv4/include/opencv2/flann/params.h (about) 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 33 //! @cond IGNORED 34 35 #include "any.h" 36 #include "general.h" 37 #include <iostream> 38 #include <map> 39 40 41 namespace cvflann 42 { 43 44 typedef std::map<cv::String, any> IndexParams; 45 46 struct 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 74 template<typename T> 75 T get_param(const IndexParams& params, cv::String name, const T& default_value) 76 { 77 IndexParams::const_iterator it = params.find(name); 78 if (it != params.end()) { 79 return it->second.cast<T>(); 80 } 81 else { 82 return default_value; 83 } 84 } 85 86 template<typename T> 87 T get_param(const IndexParams& params, cv::String name) 88 { 89 IndexParams::const_iterator it = params.find(name); 90 if (it != params.end()) { 91 return it->second.cast<T>(); 92 } 93 else { 94 FLANN_THROW(cv::Error::StsBadArg, cv::String("Missing parameter '")+name+cv::String("' in the parameters given")); 95 } 96 } 97 98 inline void print_params(const IndexParams& params, std::ostream& stream) 99 { 100 IndexParams::const_iterator it; 101 102 for(it=params.begin(); it!=params.end(); ++it) { 103 stream << it->first << " : " << it->second << std::endl; 104 } 105 } 106 107 inline void print_params(const IndexParams& params) 108 { 109 print_params(params, std::cout); 110 } 111 112 } 113 114 //! @endcond 115 116 #endif /* OPENCV_FLANN_PARAMS_H_ */