专为命令行解析设计。
下面的示例演示了如何使用 CommandLineParser
parser.about("应用程序名称 v1.0.0");
if (parser.has("help"))
{
parser.printMessage();
return 0;
}
int N = parser.get<int>("N");
double fps = parser.get<double>("fps");
use_time_stamp = parser.has("timestamp");
int repeat = parser.get<
int>(2);
if (!parser.check())
{
parser.printErrors();
return 0;
}
专为命令行解析设计。
定义 utility.hpp:890
void repeat(InputArray src, int ny, int nx, OutputArray dst)
用输入数组的重复副本填充输出数组。
std::string String
定义 cvstd.hpp:151
键语法
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"))
用法
对于上面描述的键
# 好的调用(3个位置参数:image1、image2 和 repeat;N 为 200,ts 为 true)
$ ./app -N=200 1.png 2.jpg 19 -ts
# 坏的调用
$ ./app -fps=aaa
错误
参数 'fps':无法转换:[aaa] 为 [double]
- 示例
- fld_lines.cpp, modules/shape/samples/shape_example.cpp, samples/cpp/camshiftdemo.cpp, samples/cpp/connected_components.cpp, samples/cpp/contours2.cpp, samples/cpp/convexhull.cpp, samples/cpp/cout_mat.cpp, samples/cpp/create_mask.cpp, samples/cpp/demhist.cpp, samples/cpp/distrans.cpp, samples/cpp/edge.cpp, samples/cpp/facedetect.cpp, samples/cpp/ffilldemo.cpp, samples/cpp/fitellipse.cpp, samples/cpp/grabcut.cpp, samples/cpp/image_alignment.cpp, samples/cpp/laplace.cpp, samples/cpp/lkdemo.cpp, samples/cpp/lsd_lines.cpp, samples/cpp/pca.cpp, samples/cpp/peopledetect.cpp, samples/cpp/polar_transforms.cpp, samples/cpp/segment_objects.cpp, samples/cpp/train_HOG.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/features2D/Homography/decompose_homography.cpp, samples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cpp, samples/cpp/tutorial_code/features2D/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/warpPerspective_demo.cpp, samples/cpp/watershed.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, and samples/tapi/hog.cpp.