| OpenCV 5.0.0alpha Open Source Computer Vision

Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
cv::CommandLineParser Class Reference
Core functionality » Utility and system functions and macros

Designed for command line parsing. More...

`#include <opencv2/core/utility.hpp>`

Collaboration diagram for cv::CommandLineParser:

## Public Member Functions
| CommandLineParser (const CommandLineParser &parser)
| Copy constructor.
| CommandLineParser (int argc, const char *const argv[], const String &keys)
| Constructor.
| ~CommandLineParser ()
| Destructor.
void | about (const String &message)
| Set the about message.
bool | check () const
| Check for parsing errors.
template<typename T >
T | get (const String &name, bool space_delete=true) const
| Access arguments by name.
template<typename T >
T | get (int index, bool space_delete=true) const
| Access positional arguments by index.
String | getPathToApplication () const
| Returns application path.
bool | has (const String &name) const
| Check if field was provided in the command line.
CommandLineParser & | operator= (const CommandLineParser &parser)
| Assignment operator.
void | printErrors () const
| Print list of errors occurred.
void | printMessage () const
| Print help message.

## Protected Member Functions
void | getByIndex (int index, bool space_delete, Param type, void *dst) const
void | getByName (const String &name, bool space_delete, Param type, void *dst) const

## Protected Attributes
Impl * | impl

## Detailed Description

Designed for command line parsing.

The sample below demonstrates how to use CommandLineParser:

CommandLineParser parser(argc, argv, keys);
parser.about("Application name v1.0.0");
if (parser.has("help"))
{
parser.printMessage();
return 0;
}
int N = parser.get<int>("N");
double fps = parser.get<double>("fps");
String path = parser.get<String>("path");
use_time_stamp = parser.has("timestamp");
String img1 = parser.get<String>(0);
String img2 = parser.get<String>(1);
int repeat = parser.get<int>(2);
if (!parser.check())
{
parser.printErrors();
return 0;
}
cv::CommandLineParser
Designed for command line parsing.
Definition utility.hpp:890
cv::repeat
void repeat(InputArray src, int ny, int nx, OutputArray dst)
Fills the output array with repeated copies of the input array.
cv::String
std::string String
Definition cvstd.hpp:151

### Keys syntax

The keys parameter is a string containing several blocks, each one is enclosed in curly braces and describes one argument. Each argument contains three parts separated by the `|` symbol:

1. argument names is a list of option synonyms separated by standard space characters ' ' (to mark argument as positional, prefix it with the `@` symbol)
2. default value will be used if the argument was not provided (can be empty)
3. help message (can be empty)

For example:

const String keys =
"{help h usage ? | | print this message }"
"{@image1 | | image1 for compare }"
"{@image2 |<none>| image2 for compare }"
"{@repeat |1 | number }"
"{path |. | path to file }"
"{fps | -1.0 | fps for output video }"
"{N count |100 | count of objects }"
"{ts timestamp | | use time stamp }"
;
}

Note that there are no default values for `help` and `timestamp` so we can check their presence using the `has()` method. Arguments with default values are considered to be always present. Use the `get()` method in these cases to check their actual value instead. Note that whitespace characters other than standard spaces are considered part of the string. Additionally, leading and trailing standard spaces around the help messages are ignored.

String keys like `get<String>("@image1")` return the empty string `""` by default - even with an empty default value. Use the special `<none>` default value to enforce that the returned string must not be empty. (like in `get<String>("@image2")`)

### Usage

For the described keys:

# Good call (3 positional parameters: image1, image2 and repeat; N is 200, ts is true)
$ ./app -N=200 1.png 2.jpg 19 -ts
# Bad call
$ ./app -fps=aaa
ERRORS:
Parameter 'fps': can not convert: [aaa] to [double]

Examples
  fld_lines.cpp, modules/shape/samples/shape_example.cpp, samples/cpp/connected_components.cpp, samples/cpp/cout_mat.cpp, samples/cpp/demhist.cpp, samples/cpp/floodfill.cpp, samples/cpp/geometry.cpp, samples/cpp/grabcut.cpp, samples/cpp/image_alignment.cpp, samples/cpp/lkdemo.cpp, samples/cpp/pca.cpp, samples/cpp/snippets/camshiftdemo.cpp, samples/cpp/snippets/create_mask.cpp, samples/cpp/snippets/detect_blob.cpp, samples/cpp/snippets/dis_opticalflow.cpp, samples/cpp/snippets/distrans.cpp, samples/cpp/snippets/edge.cpp, samples/cpp/snippets/laplace.cpp, samples/cpp/snippets/lsd_lines.cpp, samples/cpp/snippets/mask_tmpl.cpp, samples/cpp/snippets/polar_transforms.cpp, samples/cpp/snippets/segment_objects.cpp, samples/cpp/snippets/warpPerspective_demo.cpp, samples/cpp/snippets/watershed.cpp, samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp, samples/cpp/tutorial_code/ImgProc/Morphology_1.cpp, samples/cpp/tutorial_code/ImgProc/Morphology_2.cpp, samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp, samples/cpp/tutorial_code/features/Homography/decompose_homography.cpp, samples/cpp/tutorial_code/features/Homography/homography_from_camera_displacement.cpp, samples/cpp/tutorial_code/features/Homography/pose_from_homography.cpp, samples/cpp/tutorial_code/ml/introduction_to_pca/introduction_to_pca.cpp, samples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cpp, samples/cpp/videowriter.cpp, samples/dnn/classification.cpp, samples/dnn/colorization.cpp, samples/dnn/object_detection.cpp, samples/dnn/openpose.cpp, samples/dnn/segmentation.cpp, samples/dnn/text_detection.cpp, samples/facedetect.cpp, samples/hog_tapi.cpp, and samples/peopledetect.cpp.

## Constructor & Destructor Documentation

## ◆ CommandLineParser() [1/2]

cv::CommandLineParser::CommandLineParser | ( | int | argc,
|  | const char *const | argv[],
|  | const String & | keys )

Constructor.

Initializes command line parser object

Parameters

  argc | number of command line arguments (from main())
  argv | array of command line arguments (from main())
  keys | string describing acceptable command line parameters (see class description for syntax)

## ◆ CommandLineParser() [2/2]

cv::CommandLineParser::CommandLineParser | ( | const CommandLineParser & | parser | ) |

Copy constructor.

## ◆ ~CommandLineParser()

cv::CommandLineParser::~CommandLineParser | ( |  | ) |

Destructor.

## Member Function Documentation

## ◆ about()

void cv::CommandLineParser::about | ( | const String & | message | ) |

Set the about message.

The about message will be shown when printMessage is called, right before arguments table.

Examples
  samples/cpp/snippets/polar_transforms.cpp, and samples/dnn/colorization.cpp.

## ◆ check()

bool cv::CommandLineParser::check | ( |  | ) | const

Check for parsing errors.

Returns false if error occurred while accessing the parameters (bad conversion, missing arguments, etc.). Call printErrors to print error messages list.

## ◆ get() [1/2]

template<typename T >

T cv::CommandLineParser::get | ( | const String & | name,
|  | bool | space_delete = true ) const
| inline

Access arguments by name.

Returns argument converted to selected type. If the argument is not known or can not be converted to selected type, the error flag is set (can be checked with check).

For example, define:

String keys = "{N count||}";

Call:

$ ./my-app -N=20
# or
$ ./my-app --count=20

Access:

int N = parser.get<int>("N");

Parameters

  name | name of the argument
  space_delete | remove spaces from the left and right of the string

Template Parameters

  T | the argument will be converted to this type if possible

Note
  You can access positional arguments by their `@`-prefixed name:
  parser.get<String>("@image");

Examples
  fld_lines.cpp, samples/cpp/snippets/dis_opticalflow.cpp, samples/cpp/snippets/lsd_lines.cpp, samples/cpp/snippets/mask_tmpl.cpp, samples/cpp/snippets/polar_transforms.cpp, samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp, samples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cpp, samples/dnn/colorization.cpp, and samples/hog_tapi.cpp.

## ◆ get() [2/2]

template<typename T >

T cv::CommandLineParser::get | ( | int | index,
|  | bool | space_delete = true ) const
| inline

Access positional arguments by index.

Returns argument converted to selected type. Indexes are counted from zero.

For example, define:

String keys = "{@arg1||}{@arg2||}"

Call:

./my-app abc qwe

Access arguments:

String val_1 = parser.get<String>(0); // returns "abc", arg1
String val_2 = parser.get<String>(1); // returns "qwe", arg2

Parameters

  index | index of the argument
  space_delete | remove spaces from the left and right of the string

Template Parameters

  T | the argument will be converted to this type if possible

## ◆ getByIndex()

void cv::CommandLineParser::getByIndex | ( | int | index,
|  | bool | space_delete,
|  | Param | type,
|  | void * | dst ) const
| protected

## ◆ getByName()

void cv::CommandLineParser::getByName | ( | const String & | name,
|  | bool | space_delete,
|  | Param | type,
|  | void * | dst ) const
| protected

## ◆ getPathToApplication()

String cv::CommandLineParser::getPathToApplication | ( |  | ) | const

Returns application path.

This method returns the path to the executable from the command line (`argv[0]`).

For example, if the application has been started with such a command:

$ ./bin/my-executable

this method will return `./bin`.

## ◆ has()

bool cv::CommandLineParser::has | ( | const String & | name | ) | const

Check if field was provided in the command line.

Parameters

  name | argument name to check

Examples
  fld_lines.cpp, samples/dnn/colorization.cpp, and samples/hog_tapi.cpp.

## ◆ operator=()

CommandLineParser & cv::CommandLineParser::operator= | ( | const CommandLineParser & | parser | ) |

Assignment operator.

## ◆ printErrors()

void cv::CommandLineParser::printErrors | ( |  | ) | const

Print list of errors occurred.

See also
  check

## ◆ printMessage()

void cv::CommandLineParser::printMessage | ( |  | ) | const

Print help message.

This method will print standard help message containing the about message and arguments description.

See also
  about

Examples
  fld_lines.cpp, samples/cpp/snippets/dis_opticalflow.cpp, samples/cpp/snippets/lsd_lines.cpp, samples/cpp/snippets/mask_tmpl.cpp, samples/cpp/snippets/polar_transforms.cpp, samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp, and samples/dnn/colorization.cpp.

## Member Data Documentation

## ◆ impl

Impl* cv::CommandLineParser::impl
| protected

The documentation for this class was generated from the following file:

- opencv2/core/utility.hpp