10 #include <boost/program_options.hpp>
17 struct ImageReaderOptions;
18 struct SiftExtractionOptions;
19 struct SiftMatchingOptions;
20 struct ExhaustiveMatchingOptions;
21 struct SequentialMatchingOptions;
22 struct VocabTreeMatchingOptions;
23 struct SpatialMatchingOptions;
24 struct TransitiveMatchingOptions;
25 struct ImagePairsMatchingOptions;
26 struct BundleAdjustmentOptions;
28 struct TexturingOptions;
32 struct PatchMatchOptions;
33 struct StereoFusionOptions;
34 struct PoissonMeshingOptions;
35 struct DelaunayMeshingOptions;
82 const std::string& help_text =
"");
86 const std::string& help_text =
"");
93 void Parse(
const int argc,
char** argv);
96 void Write(
const std::string&
path)
const;
114 std::shared_ptr<IncrementalMapperOptions>
mapper;
125 template <
typename T>
126 void AddAndRegisterRequiredOption(
const std::string&
name,
128 const std::string& help_text =
"");
129 template <
typename T>
130 void AddAndRegisterDefaultOption(
const std::string&
name,
132 const std::string& help_text =
"");
134 template <
typename T>
135 void RegisterOption(
const std::string&
name,
const T* option);
137 std::shared_ptr<boost::program_options::options_description> desc_;
139 std::vector<std::pair<std::string, const bool*>> options_bool_;
140 std::vector<std::pair<std::string, const int*>> options_int_;
141 std::vector<std::pair<std::string, const double*>> options_double_;
142 std::vector<std::pair<std::string, const std::string*>> options_string_;
144 bool added_log_options_;
145 bool added_random_options_;
146 bool added_database_options_;
147 bool added_image_options_;
148 bool added_extraction_options_;
149 bool added_match_options_;
150 bool added_exhaustive_match_options_;
151 bool added_sequential_match_options_;
152 bool added_vocab_tree_match_options_;
153 bool added_spatial_match_options_;
154 bool added_transitive_match_options_;
155 bool added_image_pairs_match_options_;
156 bool added_ba_options_;
157 bool added_mapper_options_;
158 bool added_patch_match_stereo_options_;
159 bool added_stereo_fusion_options_;
160 bool added_poisson_meshing_options_;
161 bool added_delaunay_meshing_options_;
162 bool added_texturing_options_;
163 bool added_render_options_;
170 template <
typename T>
173 const std::string& help_text) {
174 desc_->add_options()(
name.c_str(),
175 boost::program_options::value<T>(option)->required(),
179 template <
typename T>
182 const std::string& help_text) {
183 desc_->add_options()(
185 boost::program_options::value<T>(option)->default_value(*option),
189 template <
typename T>
190 void OptionManager::AddAndRegisterRequiredOption(
const std::string&
name,
192 const std::string& help_text) {
193 desc_->add_options()(
name.c_str(),
194 boost::program_options::value<T>(option)->required(),
196 RegisterOption(
name, option);
199 template <
typename T>
200 void OptionManager::AddAndRegisterDefaultOption(
const std::string&
name,
202 const std::string& help_text) {
203 desc_->add_options()(
205 boost::program_options::value<T>(option)->default_value(*option),
207 RegisterOption(
name, option);
210 template <
typename T>
211 void OptionManager::RegisterOption(
const std::string&
name,
const T* option) {
212 if (std::is_same<T, bool>::value) {
213 options_bool_.emplace_back(
name,
reinterpret_cast<const bool*
>(option));
214 }
else if (std::is_same<T, int>::value) {
215 options_int_.emplace_back(
name,
reinterpret_cast<const int*
>(option));
216 }
else if (std::is_same<T, double>::value) {
217 options_double_.emplace_back(
name,
218 reinterpret_cast<const double*
>(option));
219 }
else if (std::is_same<T, std::string>::value) {
220 options_string_.emplace_back(
221 name,
reinterpret_cast<const std::string*
>(option));
223 LOG(FATAL) <<
"Unsupported option type";
void AddStereoFusionOptions()
std::shared_ptr< SequentialMatchingOptions > sequential_matching
std::shared_ptr< TransitiveMatchingOptions > transitive_matching
void AddRequiredOption(const std::string &name, T *option, const std::string &help_text="")
OptionManager(bool add_project_options=true)
void AddBundleAdjustmentOptions()
void AddExhaustiveMatchingOptions()
std::shared_ptr< mvs::PoissonMeshingOptions > poisson_meshing
std::shared_ptr< mvs::DelaunayMeshingOptions > delaunay_meshing
std::shared_ptr< TexturingOptions > texturing
bool Read(const std::string &path)
void ModifyForIndividualData()
bool ReRead(const std::string &path)
std::shared_ptr< mvs::PatchMatchOptions > patch_match_stereo
void AddTexturingOptions()
void AddMatchingOptions()
std::shared_ptr< RenderOptions > render
void AddDefaultOption(const std::string &name, T *option, const std::string &help_text="")
std::shared_ptr< std::string > database_path
std::shared_ptr< mvs::StereoFusionOptions > stereo_fusion
void ModifyForVideoData()
std::shared_ptr< SiftMatchingOptions > sift_matching
void AddTransitiveMatchingOptions()
void AddPoissonMeshingOptions()
std::shared_ptr< BundleAdjustmentOptions > bundle_adjustment
void ModifyForInternetData()
void AddExtractionOptions()
std::shared_ptr< IncrementalMapperOptions > mapper
void ModifyForMediumQuality()
void ResetOptions(const bool reset_paths)
void AddVocabTreeMatchingOptions()
std::shared_ptr< std::string > project_path
void Write(const std::string &path) const
void ModifyForHighQuality()
std::shared_ptr< SiftExtractionOptions > sift_extraction
void AddSequentialMatchingOptions()
void AddDatabaseOptions()
void ModifyForLowQuality()
std::shared_ptr< ImageReaderOptions > image_reader
void AddDelaunayMeshingOptions()
void AddPatchMatchStereoOptions()
void ModifyForExtremeQuality()
std::shared_ptr< VocabTreeMatchingOptions > vocab_tree_matching
void Parse(const int argc, char **argv)
std::shared_ptr< ExhaustiveMatchingOptions > exhaustive_matching
void AddImagePairsMatchingOptions()
void AddSpatialMatchingOptions()
std::shared_ptr< SpatialMatchingOptions > spatial_matching
std::shared_ptr< ImagePairsMatchingOptions > image_pairs_matching
std::shared_ptr< std::string > image_path
static const std::string path
colmap::IncrementalMapperOptions IncrementalMapperOptions
colmap::RenderOptions RenderOptions