OpenCV453
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧

Designed for command line parsing [詳解]

#include <utility.hpp>

公開メンバ関数

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

限定公開メンバ関数

void getByName (const String &name, bool space_delete, Param type, void *dst) const
 
void getByIndex (int index, bool space_delete, Param type, void *dst) const
 

限定公開変数類

Impl * impl
 

詳解

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;
}
CommandLineParser(int argc, const char *const argv[], const String &keys)
Constructor
CV_EXPORTS_W void repeat(InputArray src, int ny, int nx, OutputArray dst)
Fills the output array with repeated copies of the input array.

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 space-separated list of option synonyms (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.

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]

構築子と解体子

◆ CommandLineParser()

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

Constructor

Initializes command line parser object

引数
argcnumber of command line arguments (from main())
argvarray of command line arguments (from main())
keysstring describing acceptable command line parameters (see class description for syntax)

関数詳解

◆ 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.

◆ 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");
引数
namename of the argument
space_deleteremove spaces from the left and right of the string
テンプレート引数
Tthe argument will be converted to this type if possible
覚え書き
You can access positional arguments by their @-prefixed name:
parser.get<String>("@image");

◆ 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
引数
indexindex of the argument
space_deleteremove spaces from the left and right of the string
テンプレート引数
Tthe argument will be converted to this type if possible

◆ 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

引数
nameargument name to check

◆ printErrors()

void cv::CommandLineParser::printErrors ( ) const

Print list of errors occurred

参照
check

◆ printMessage()

void cv::CommandLineParser::printMessage ( ) const

Print help message

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

参照
about

このクラス詳解は次のファイルから抽出されました: