読者です 読者をやめる 読者になる 読者になる

CommandLineParser[OpenCV]

以前にコマンドラインについての記事を書いたことがありました。
今回はOpenCVの関数を用いて、コマンドラインを読み込ませるプログラムを書いてみようと思います。

CommandLineParser
CommandLineParser、、、。
なんだチミはってか。そうです。こいつがコマンドラインを読み込むプルグラムを簡単に書く関数です。

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

関数本体はこんな感じ。 argcとargvはmain分の引数と同じものをこの関数に渡し、この引数についての情報をkeysというやつに渡すということです。

Keysの書き方
Keysは3つの要素で構成されています。

  1. オプションの名前
  2. デフォルト値
  3. ヘルプメッセージ

OpenCVの公式documentの例を下に書きました。

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 h usage ?)。
引数を位置指定するには前に@を付けます。
またデフォルト値のないオプションについてはhas()で確認できます。

CommandLineParser parser(argc, argv, keys);
if (parser.has("help"))
{
   parser.printMessage();
   return 0;
}

またStringの引数は次のように取得します。

std::string image1 = parser.get<std::string>("@image1");

また追加事項があれば随時更新します。 それでは。