OpenCV  4.10.0
开源计算机视觉库
正在加载...
正在搜索...
无匹配项
公有成员函数 | 保护成员函数 | 保护成员变量 | 所有成员列表
cv::CommandLineParser 类参考

用于命令行解析。 更多...

#include <opencv2/core/utility.hpp>

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("应用程序名称 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;
}
用于命令行解析。
定义 utility.hpp:820
void repeat(InputArray src, int ny, int nx, OutputArray dst)
用输入数组的重复副本填充输出数组。
std::string String
定义 cvstd.hpp:151

键语法

keys 参数是一个包含多个块的字符串,每个块都用大括号括起来,描述一个参数。每个参数包含三个部分,用 `|` 符号隔开

  1. 参数名称是选项同义词列表,用标准空格字符 ` ` 隔开(要将参数标记为位置参数,请在前面加上 `@` 符号)
  2. 如果未提供参数,则使用默认值(可以为空)
  3. 帮助信息(可以为空)

例如

const String keys =
"{help h usage ? | | 打印此信息 }"
"{@image1 | | 用于比较的图像 1 }"
"{@image2 |<none>| 用于比较的图像 2 }"
"{@repeat |1 | 数字 }"
"{path |. | 文件路径 }"
"{fps | -1.0 | 输出视频的帧率 }"
"{N count |100 | 对象数量 }"
"{ts timestamp | | 使用时间戳 }"
;
}

请注意,`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.cppmodules/shape/samples/shape_example.cppsamples/cpp/camshiftdemo.cppsamples/cpp/connected_components.cppsamples/cpp/contours2.cppsamples/cpp/convexhull.cppsamples/cpp/cout_mat.cppsamples/cpp/create_mask.cppsamples/cpp/demhist.cppsamples/cpp/distrans.cppsamples/cpp/edge.cppsamples/cpp/facedetect.cppsamples/cpp/ffilldemo.cppsamples/cpp/filestorage.cppsamples/cpp/fitellipse.cppsamples/cpp/grabcut.cppsamples/cpp/image_alignment.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/lsd_lines.cppsamples/cpp/pca.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cppsamples/cpp/tutorial_code/ImgProc/Morphology_1.cppsamples/cpp/tutorial_code/ImgProc/Morphology_2.cppsamples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cppsamples/cpp/tutorial_code/features2D/Homography/decompose_homography.cppsamples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cppsamples/cpp/tutorial_code/features2D/Homography/pose_from_homography.cppsamples/cpp/tutorial_code/ml/introduction_to_pca/introduction_to_pca.cppsamples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cppsamples/cpp/warpPerspective_demo.cppsamples/cpp/watershed.cppsamples/dnn/classification.cppsamples/dnn/colorization.cppsamples/dnn/object_detection.cppsamples/dnn/openpose.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp 以及 samples/tapi/hog.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/polar_transforms.cpp,以及 samples/dnn/classification.cpp.

◆ check()

bool cv::CommandLineParser::check ( ) const

检查解析错误。

如果在访问参数时出现错误(转换错误、缺少参数等),则返回 false。调用 printErrors 打印错误信息列表。

示例
samples/dnn/classification.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
# 或者
$ ./my-app --count=20

访问

int N = parser.get<int>("N");
参数
name参数的名称
space_delete从字符串的左侧和右侧删除空格
模板参数
T如果可能,参数将被转换为此类型
注意
可以通过其以 @ 开头的名称访问位置参数
parser.get<String>("@image");
示例
fld_lines.cppsamples/cpp/lsd_lines.cppsamples/cpp/polar_transforms.cppsamples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cppsamples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cppsamples/dnn/classification.cpp,以及 samples/tapi/hog.cpp.

◆ 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); // 返回 "abc",arg1
String val_2 = parser.get<String>(1); // 返回 "qwe",arg2
参数
index参数的索引
space_delete从字符串的左侧和右侧删除空格
模板参数
T如果可能,参数将被转换为此类型

◆ 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.cppsamples/dnn/classification.cpp,以及 samples/tapi/hog.cpp.

◆ operator=()

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

赋值运算符。

◆ printErrors()

void cv::CommandLineParser::printErrors ( ) const

打印出现的错误列表。

另请参阅
check
示例
samples/dnn/classification.cpp.

◆ printMessage()

void cv::CommandLineParser::printMessage ( ) const

打印帮助信息。

此方法将打印包含关于信息和参数描述的标准帮助信息。

另请参阅
about
示例
fld_lines.cppsamples/cpp/lsd_lines.cppsamples/cpp/polar_transforms.cppsamples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp,以及 samples/dnn/classification.cpp.

成员数据文档

◆ impl

Impl* cv::CommandLineParser::impl
protected

此类的文档从以下文件生成