OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。

コマンドラインのパース用に設計されている。 続きを読む...

#include <opencv2/core/utility.hpp>

Collaboration diagram for cv::CommandLineParser:

公開メンバ関数

 CommandLineParser (const CommandLineParser &parser)
 コピーコンストラクタ。
 
 CommandLineParser (int argc, const char *const argv[], const String &keys)
 コンストラクタ。
 
 ~CommandLineParser ()
 デストラクタ。
 
void about (const String &message)
 概要メッセージを設定する。
 
bool check () const
 パースエラーをチェックする。
 
template<typename T >
get (const String &name, bool space_delete=true) const
 引数に名前でアクセスする。
 
template<typename T >
get (int index, bool space_delete=true) const
 位置引数にインデックスでアクセスする。
 
String getPathToApplication () const
 アプリケーションのパスを返す。
 
bool has (const String &name) const
 フィールドがコマンドラインで指定されたかどうかをチェックする。
 
CommandLineParseroperator= (const CommandLineParser &parser)
 代入演算子。
 
void printErrors () const
 発生したエラーの一覧を表示する。
 
void printMessage () const
 ヘルプメッセージを表示する。
 

限定公開メンバ関数

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
 

限定公開変数類

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;
}
Designed for command line parsing.
Definition utility.hpp:915
void repeat(InputArray src, int ny, int nx, OutputArray dst)
Fills the output array with repeated copies of the input array.
std::string String
Definition cvstd.hpp:151

キーの構文

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

helptimestamp にはデフォルト値がないため、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]
fld_lines.cpp, modules/shape/samples/shape_example.cpp, samples/cpp/connected_components.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/chromatic_aberration_correction.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/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, および samples/peopledetect.cpp

構築子と解体子の詳解

◆ CommandLineParser() [1/2]

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

コンストラクタ。

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

引数
argcコマンドライン引数の数(main() から)
argvコマンドライン引数の配列(main() から)
keys受け付け可能なコマンドラインパラメータを記述する文字列(構文についてはクラスの説明を参照)

◆ CommandLineParser() [2/2]

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

コピーコンストラクタ。

◆ ~CommandLineParser()

cv::CommandLineParser::~CommandLineParser ( )

デストラクタ。

メンバ関数詳解

◆ about()

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

概要メッセージを設定する。

概要メッセージは printMessage が呼び出されたときに、引数テーブルの直前に表示される。

samples/cpp/snippets/chromatic_aberration_correction.cpp, および samples/dnn/colorization.cpp

◆ check()

bool cv::CommandLineParser::check ( ) const

パースエラーをチェックする。

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

samples/cpp/snippets/chromatic_aberration_correction.cpp.

◆ 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文字列の左右から空白を取り除く
テンプレート引数
Tthe argument will be converted to this type if possible
覚え書き
位置引数には、@ を先頭に付けた名前でアクセスできる:
parser.get<String>("@image");
fld_lines.cpp, samples/cpp/snippets/chromatic_aberration_correction.cpp, samples/cpp/snippets/dis_opticalflow.cpp, samples/cpp/snippets/lsd_lines.cpp, samples/cpp/snippets/mask_tmpl.cpp, samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp, samples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cpp, samples/dnn/colorization.cpp, および samples/hog_tapi.cpp

◆ get() [2/2]

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

位置引数にインデックスでアクセスする。

選択した型に変換された引数を返す。インデックスは0から数える。

例として、次のように定義し:

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文字列の左右から空白を取り除く
テンプレート引数
Tthe 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

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

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

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

$ ./bin/my-executable

このメソッドは ./bin を返す。

◆ has()

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

フィールドがコマンドラインで指定されたかどうかをチェックする。

引数
nameチェックする引数名
fld_lines.cpp, samples/cpp/snippets/chromatic_aberration_correction.cpp, samples/dnn/colorization.cpp, および samples/hog_tapi.cpp

◆ operator=()

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

代入演算子。

◆ printErrors()

void cv::CommandLineParser::printErrors ( ) const

発生したエラーの一覧を表示する。

参照
check
samples/cpp/snippets/chromatic_aberration_correction.cpp.

◆ printMessage()

void cv::CommandLineParser::printMessage ( ) const

ヘルプメッセージを表示する。

このメソッドは、概要メッセージと引数の説明を含む標準的なヘルプメッセージを表示する。

参照
about
fld_lines.cpp, samples/cpp/snippets/dis_opticalflow.cpp, samples/cpp/snippets/lsd_lines.cpp, samples/cpp/snippets/mask_tmpl.cpp, samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp, および samples/dnn/colorization.cpp

メンバ変数詳解

◆ impl

Impl* cv::CommandLineParser::impl
protected

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