OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧

Designed for command line parsing [詳解]

#include <utility.hpp>

公開メンバ関数

CommandLineParser (int argc, const char *const argv[], const String &keys)
コンストラクタ[【詳解】(英語]
CommandLineParser (const CommandLineParser &parser)
コピーコンストラクタ
CommandLineParser & operator= (const CommandLineParser &parser)
代入演算子.
~CommandLineParser ()
デストラクタ
String getPathToApplication () const
アプリケーションのパスを返す[【詳解】(英語]
template<typename T >
T get (const String &name, bool space_delete=true) const
名前による引数へのアクセス[【詳解】(英語]
template<typename T >
T get (int index, bool space_delete=true) const
インデックスによる位置引数へのアクセス[【詳解】(英語]
bool has (const String &name) const
フィールドがコマンドラインで提供されたかどうかをチェックします[【詳解】(英語]
bool check () const
解析エラーのチェック[【詳解】(英語]
void about (const String &message)
アバウトメッセージの設定[【詳解】(英語]
void printMessage () const
ヘルプ・メッセージの印刷[【詳解】(英語]
void printErrors () const
発生したエラーのリストを表示する[【詳解】(英語]

限定公開メンバ関数

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

詳解

コマンドライン解析のためのデザイン

以下のサンプルでは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パラメータは、複数のブロックを含む文字列で、各ブロックは中括弧で囲まれており、1つの引数を記述します。各引数には、次の記号で区切られた3つの部分があります。|記号で区切られています。

  1. 引数名は、オプションの同義語をスペースで区切ったリストです(引数を位置指定したい場合は、引数の前に@シンボルを付けます)
  2. デフォルト値は、引数が提供されなかった場合に使用されます(空でもよい)。
  3. ヘルプメッセージ(空でも可)

例えば、以下のようになります。

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 }"
;
}

のデフォルト値は存在しないことに注意してください。helpおよびtimestampにはデフォルト値がないので、その存在を確認するには has() メソッドで確認できます。デフォルト値を持つ引数は、常に存在するものとみなされます。このような場合は get() メソッドを使用して実際の値を確認します。

のような文字列キーは、空の文字列を返します。get<String>("@image1")は、デフォルトで空の文字列""はデフォルトで空の文字列を返します。特別な<none>デフォルト値を使用して、返される文字列が空であってはならないことを強制します。get<String>("@image2"))

使用方法

説明されているキーに対して

# 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
)

コンストラクタ

コマンドラインパーサーオブジェクトの初期化

引数
argc (main()からの)コマンドライン引数の数
argv (main()からの)コマンドライン引数の配列
keys 許容できるコマンドラインパラメータを記述した文字列(構文についてはクラスの説明を参照してください。)

関数詳解

about()

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

アバウトメッセージの設定

が呼び出されたときに、引数表の直前にアバウトなメッセージが表示されます。printMessageが呼び出されたときに、引数表の直前に表示されます。

check()

bool cv::CommandLineParser::check ( ) const

解析エラーのチェック

パラメータへのアクセス中にエラーが発生した場合、falseを返します(変換不良、引数の欠落など)。呼び出しprintErrorsを呼び出して、エラーメッセージのリストを表示します。

get() [1/2]

template<typename T >
T cv::CommandLineParser::get ( const String & name,
bool space_delete = true
) const
inline

名前による引数へのアクセス

選択された型に変換された引数を返します。引数が既知でない場合、または選択された型に変換できない場合、エラー・フラグが設定されます(以下の方法で確認できます)。check).

例えば、以下のように定義します。

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

コール。

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

アクセス。

int N = parser.get<int>("N");
引数
name 引数の名前
space_delete 文字列の左と右のスペースを削除する
テンプレート引数
T 引数は可能な限りこの型に変換されます。
覚え書き
位置指定された引数には、次のようにしてアクセスできます。@-接頭辞付きの名前でアクセスできます。
parser.get<String>("@image");

get() [2/2]

template<typename T >
T cv::CommandLineParser::get ( int index,
bool space_delete = true
) const
inline

インデックスによる位置引数へのアクセス

選択された型に変換された引数を返します。インデックスはゼロからカウントされます。

例えば、以下のように定義します。

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

コール。

./my-app abc qwe

引数にアクセスします。

String val_1 = parser.get<String>(0); // returns "abc", arg1
String val_2 = parser.get<String>(1); // returns "qwe", arg2
引数
index 引数のインデックス
space_delete 文字列の左と右のスペースを削除する
テンプレート引数
T 引数は可能な限りこの型に変換されます。

getPathToApplication()

String cv::CommandLineParser::getPathToApplication ( ) const

アプリケーションのパスを返す

このメソッドは、コマンドラインからの実行ファイルへのパスを返します。argv[0]).

例えば、そのようなコマンドでアプリケーションが起動された場合です。

$ ./bin/my-executable

このメソッドは次のように返します。./bin.

has()

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

フィールドがコマンドラインで提供されたかどうかをチェックします

引数
name チェックする引数名

printErrors()

void cv::CommandLineParser::printErrors ( ) const

発生したエラーのリストを表示する

参照
check

printMessage()

void cv::CommandLineParser::printMessage ( ) const

ヘルプ・メッセージの印刷

このメソッドは、aboutメッセージと引数の説明を含む標準のヘルプメッセージを印刷します。

参照
about

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