OpenCV 4.11.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:890
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 | 输出视频的 fps }"
"{N count |100 | 对象数量 }"
"{ts timestamp | | 使用时间戳 }"
;
}

请注意,helptimestamp 没有默认值,因此我们可以使用has() 方法检查它们的存在。具有默认值的参数被认为始终存在。 在这些情况下,使用get() 方法检查它们的实际值。 请注意,标准空格以外的空格字符被认为是字符串的一部分。此外,帮助消息周围的前导和尾随标准空格将被忽略。

类似于 `get<String>("@image1")` 这样的字符串键默认情况下返回空字符串 `""`,即使设置了空默认值。 使用特殊的 `` 默认值可以强制返回的字符串不为空。(例如 `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/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.cppsamples/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.cppsamples/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.cppsamples/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
保护

◆ getByName()

void cv::CommandLineParser::getByName ( const String & name,
bool space_delete,
Param type,
void * dst ) const
保护

◆ 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.cppsamples/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

打印帮助信息。

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

另请参见
关于
示例
fld_lines.cppsamples/cpp/lsd_lines.cppsamples/cpp/polar_transforms.cppsamples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cppsamples/dnn/classification.cpp

成员数据文档

◆ impl

Impl* cv::CommandLineParser::impl
保护

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