annotate c/Parameters.cpp @ 1020:9fb82fe0156f

added quiet tracking mode
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 05 Jun 2018 14:33:31 -0400
parents 6c5ce3ec497e
children 83ca1493d55c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
1 #include "Parameters.hpp"
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
2
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
3 #include <boost/program_options.hpp>
1002
6c5ce3ec497e improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
4 #include <boost/filesystem.hpp>
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
5
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
6 #include <iostream>
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
7 #include <fstream>
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
8
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
9 namespace po = boost::program_options;
1002
6c5ce3ec497e improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
10 namespace fs = boost::filesystem; // soon std
6c5ce3ec497e improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
11
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
12 using namespace std;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
13
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
14 KLTFeatureTrackingParameters::KLTFeatureTrackingParameters(const int argc, char* argv[]) {
231
249d65ff6c35 merged modifications for windows
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 230 229
diff changeset
15 string configurationFilename;
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
16 po::options_description onlyCmdLine("Command line only");
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
17 po::options_description cmdLineAndFile("Command line and configuration file");
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
18
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
19 // configuration filename
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
20 onlyCmdLine.add_options()
141
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
21 ("help,h", "displays this help message")
164
76610dcf3b8d added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 141
diff changeset
22 ("tf", "tracks features")
76610dcf3b8d added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 141
diff changeset
23 ("gf", "groups features")
654
045d05cef9d0 updating to c++11 capabilities
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 509
diff changeset
24 ("loading-time", "report feature and object loading times")
1020
9fb82fe0156f added quiet tracking mode
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1002
diff changeset
25 ("quiet", "mute printing of frame numbers")
348
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
26 ("config-file", po::value<string>(&configurationFilename), "configuration file")
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
27 ;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
28
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
29 po::positional_options_description p;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
30 p.add("config-file", 1);
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
31
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
32 // common to cnnfiguration and command line
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
33 cmdLineAndFile.add_options()
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
34 ("video-filename", po::value<string>(&videoFilename), "filename of the video to process")
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
35 ("database-filename", po::value<string>(&databaseFilename), "filename of the database where results are saved")
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
36 ("homography-filename", po::value<string>(&homographyFilename), "filename of the homography matrix")
506
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
37 ("intrinsic-camera-filename", po::value<string>(&intrinsicCameraFilename), "filename of the homography matrix")
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
38 ("distortion-coefficients", po::value<std::vector<float> >(&distortionCoefficients)->multitoken(), "")
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
39 ("undistorted-size-multiplication", po::value<float>(&undistortedImageMultiplication), "undistorted image multiplication")
509
935430b1d408 corrected mask bug in feature tracking, updated display-trajectories to display on undistorted image
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 507
diff changeset
40 ("interpolation-method", po::value<int>(&interpolationMethod), "Interpolation method for remapping image when correcting for distortion: 0 for INTER_NEAREST - a nearest-neighbor interpolation; 1 for INTER_LINEAR - a bilinear interpolation (used by default); 2 for INTER_CUBIC - a bicubic interpolation over 4x4 pixel neighborhood; 3 for INTER_LANCZOS4")
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
41 ("mask-filename", po::value<string>(&maskFilename), "filename of the mask image (where features are detected)")
507
081a9da6f85b first version with undistort implemented in the feature tracking process
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 506 495
diff changeset
42 ("undistort", po::value<bool>(&undistort), "undistort the video for feature tracking")
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
43 ("load-features", po::value<bool>(&loadFeatures), "load features from database")
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
44 ("display", po::value<bool>(&display), "display trajectories on the video")
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
45 ("video-fps", po::value<float>(&videoFPS), "original video frame rate")
229
6e73b112370b correction for unsigned int parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 191
diff changeset
46 ("frame1", po::value<unsigned int>(&frame1), "first frame to process")
278
f21ef87f98f1 resolved issue 2 and problem with negative nframes parameter
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
47 ("nframes", po::value<int>(&nFrames), "number of frame to process")
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
48 // feature tracking
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
49 ("max-nfeatures", po::value<int>(&maxNFeatures), "maximum number of features added at each frame (1000s)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
50 ("feature-quality", po::value<float>(&featureQuality), "quality level of the good features to track (]0. 1?])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
51 ("min-feature-distanceklt", po::value<float>(&minFeatureDistanceKLT), "minimum distance between features (]0. 10?])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
52 ("block-size", po::value<int>(&blockSize), "size of the block for feature characteristics ([1 ?])")
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
53 ("use-harris-detector", po::value<bool>(&useHarrisDetector), "use of Harris corner detector")
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
54 ("k", po::value<float>(&k), "k parameter to detect good features to track (OpenCV)")
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
55 ("window-size", po::value<int>(&windowSize), "size of the search window at each pyramid level ([1 ?])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
56 ("pyramid-level", po::value<int>(&pyramidLevel), "maximal pyramid level in the feature tracking algorithm ([0 maxLevel=5?])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
57 ("ndisplacements", po::value<unsigned int>(&nDisplacements), "number of displacements to test minimum feature motion ([2 4])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
58 ("min-feature-displacement", po::value<float>(&minFeatureDisplacement), "minimum displacement per frame (in world space) to keep features (]0. 0.1?])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
59 ("acceleration-bound", po::value<float>(&accelerationBound), "maximum feature acceleration (]1 3+])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
60 ("deviation-bound", po::value<float>(&deviationBound), "maximum feature deviation (on cosine) (]0 1])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
61 ("smoothing-halfwidth", po::value<int>(&nFramesSmoothing), "number of frames to smooth positions (half window) ([0 inf[")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
62 ("max-number-iterations", po::value<int>(&maxNumberTrackingIterations), "maximum number of iterations to stop optical flow (20-30?)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
63 ("min-tracking-error", po::value<float>(&minTrackingError), "minimum error to reach to stop optical flow (0.3-0.01)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
64 ("min-feature-eig-threshold", po::value<float>(&minFeatureEigThreshold)->default_value(1e-4), "minimum eigen value of a 2x2 normal matrix of optical flow equations (10^-4)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
65 ("min-feature-time", po::value<unsigned int>(&minFeatureTime), "minimum length of a feature (number of frames) to consider a feature for grouping [5 20+]")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
66 ("mm-connection-distance", po::value<float>(&mmConnectionDistance), "connection distance in feature grouping (in world space) (ped: [0.5m 2m+], cars: [1.7m 4m+])")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
67 ("mm-segmentation-distance", po::value<float>(&mmSegmentationDistance), "segmentation distance in feature grouping (in world space) (< mm-connection-distance, empirically ~ mm-connection-distance / 2.5)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
68 ("max-distance", po::value<float>(&maxDistance), "maximum distance between features for grouping (in world space) (unused)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
69 ("min-velocity-cosine", po::value<float>(&minVelocityCosine), "minimum cosine of the angle between the velocity vectors for grouping (unused)")
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
70 ("min-nfeatures-group", po::value<float>(&minNFeaturesPerGroup), "minimum average number of features per frame to create a vehicle hypothesis (]1 3+])")
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
71 // ("max-uturn-cosine", po::value<float>(&maxUTurnCosine), "maximum cosine value to detect U-turn")
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
72 // ("nframes-avoid-uturn", po::value<int>(&nFramesAvoidUTurn), "number of frames over which a feature should not make a U-turn")
348
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
73 // Safety Analysis
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
74 ("max-predicted-speed", po::value<float>(&maxPredictedSpeed)->default_value(50.), "maximum speed when predicting future motion (km/h)")
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
75 ("prediction-time-horizon", po::value<float>(&predictionTimeHorizon)->default_value(5.), "time horizon for collision prediction (s)")
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
76 ("collision-distance", po::value<float>(&collisionDistance)->default_value(1.8), "collision distance threshold (m)")
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
77 ("crossing-zones", po::value<bool>(&crossingZones)->default_value(false), "option to compute crossing zones and predicted PET")
352
72aa44072093 safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 351
diff changeset
78 ("prediction-method", po::value<string>(&predictionMethod)->default_value("na"), "prediction method")
349
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
79 ("npredicted-trajectories", po::value<int>(&nPredictedTrajectories)->default_value(1), "number of predicted trajectories (use depends on prediction method)")
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
80 ("min-acceleration", po::value<float>(&minAcceleration)->default_value(-9.1), "minimum acceleration for input distribution (m/s2) (used only for evasive action distributions)")
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
81 ("max-acceleration", po::value<float>(&maxAcceleration)->default_value(2.), "maximum acceleration for input distribution (m/s2)")
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
82 ("max-steering", po::value<float>(&maxSteering)->default_value(0.5), "maximum steering for input distribution (rad/s)")
351
891858351bcb added new parameter (use features) for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 349
diff changeset
83 ("use-features-prediction", po::value<bool>(&useFeaturesForPrediction)->default_value(false), "use feature positions and velocities for prediction")
348
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
84 ;
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
85
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
86 po::options_description cmdLine;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
87 cmdLine.add(onlyCmdLine).add(cmdLineAndFile);
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
88 try {
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
89 po::variables_map vm;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
90 store(po::command_line_parser(argc, argv).
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
91 options(cmdLine).positional(p).allow_unregistered().run(), vm);
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
92 notify(vm);
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
93
348
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
94 if (vm.count("config-file") == 0) {
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
95 cout << "Missing configuration file" << endl;
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
96 cout << cmdLine << endl;
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
97 exit(0);
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
98 }
1002
6c5ce3ec497e improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
99
141
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
100 cout << "Using configuration file " << configurationFilename << endl;
1002
6c5ce3ec497e improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
101 parentDirname = fs::path(configurationFilename).parent_path().string();
6c5ce3ec497e improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
102
141
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
103 ifstream configurationFile(configurationFilename.c_str());
348
c64a4f889b97 added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 278
diff changeset
104 store(po::parse_config_file(configurationFile, cmdLineAndFile, true), vm);
141
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
105 notify(vm);
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
106
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
107 parameterDescription = getParameterDescription(cmdLineAndFile, vm);
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
108
164
76610dcf3b8d added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 141
diff changeset
109 trackFeatures = vm.count("tf")>0;
76610dcf3b8d added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 141
diff changeset
110 groupFeatures = vm.count("gf")>0;
654
045d05cef9d0 updating to c++11 capabilities
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 509
diff changeset
111 loadingTime = vm.count("loading-time")>0;
1020
9fb82fe0156f added quiet tracking mode
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1002
diff changeset
112 quiet = vm.count("quiet")>0;
164
76610dcf3b8d added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 141
diff changeset
113
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
114 if (vm.count("help")) {
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
115 cout << cmdLine << endl;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
116 // cout << "Positional options:";
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
117 // for (unsigned int i=0; i<p.max_total_count(); i++)
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
118 // cout << " " << p.name_for_position(i);
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
119 // cout << endl;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
120 exit(0);
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
121 }
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
122 } catch(exception& e) {
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
123 cout << e.what() << endl;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
124 }
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
125 }
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
126
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
127 string KLTFeatureTrackingParameters::getParameterDescription(po::options_description& options, const po::variables_map& vm, const string& separator /* = " " */) const {
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
128 stringstream stream;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
129 vector<boost::shared_ptr<po::option_description> > optionsVec = options.options();
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
130 for (unsigned int i=0; i<optionsVec.size(); ++i) {
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
131 boost::any value = vm[optionsVec[i]->long_name()].value();
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
132 if (value.type() == typeid(bool))
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
133 stream << boost::any_cast<bool>(value) << separator;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
134 else if (value.type() == typeid(int))
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
135 stream << boost::any_cast<int>(value) << separator;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
136 else if (value.type() == typeid(unsigned int))
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
137 stream << boost::any_cast<unsigned int>(value) << separator;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
138 else if (value.type() == typeid(float))
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
139 stream << boost::any_cast<float>(value) << separator;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
140 else if (value.type() == typeid(string))
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
141 stream << boost::any_cast<string>(value) << separator;
506
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
142 else if (value.type() == typeid(vector<float>)) {
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
143 for (unsigned int j=0; j<boost::any_cast<vector<float> >(value).size(); j++)
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
144 stream << boost::any_cast<vector<float> >(value)[j] << separator;
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
145 } else
141
6f10a227486c modifications to get nframes option working on the command line
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
146 cerr << "the type of the option " << optionsVec[i]->long_name() << " (" << i << ") is not int, float or string." << endl;
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
147 }
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
148
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
149 return stream.str();
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
150 }