【CommandLineParser类】opencv库中的命令行解析类,附项目应用

本文介绍了OpenCV库中的CommandLineParser类,包括其构造函数、常用函数如get(),has(),check()等,以及在实际项目中的应用示例,展示了如何使用这个类来处理命令行参数和验证输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【CommandLineParser类】opencv库中的命令行解析类


CommandLineParser类用于命令行解析,可以在程序文件中直接调用参数。

1. 构造函数

cv::CommandLineParser::CommandLineParser( int argc, 
                                          const char *const  argv[], 
                                          const String & keys )
  • argc:命令行参数的数量
  • argv:命令行参数的数组
  • keys:描述可接受的命令行参数的字符串

keys是一个字符串,包含多个块,每一个都被装在大括号里且描述一个参数。每个参数都被“ | ”符号分隔成三部分。 第一部分是参数名称。 第二部分是参数的默认值,可以为空。 第三部分是描述该参数的帮助信息,可以为空。

格式:
参数或指令的名称 | 参数或指令的内容 | 说明

const String keys =
                        "{low            |20        | low threshold                 }"
                        "{high           |40        | high threshold                }"
                        "{mode           |1         | same as cv::findContours      }" ;

2. 常用函数

1. get() : 获取指令名称的参数值

  • name 指令名称
  • space_delete 此参数默认为true,把参数内容中的头尾的空格去掉。
template <typename T>
T get(const String& name, bool space_delete = true) const
{
   
   
	T val = T();
	getByName(name, space_delete, ParamType<T>::type, (void*)&val);
	return val;
}
 
 
template <typename T>
T get(int index, bool space_delete = true) const
{
   
   
	T val = T();
	getByIndex(index, space_delete, ParamType<T>::type, (void*)&val);
	return val;
}

2. has() : 查看是否有此指令名称,返回bool类型

备注: 此函数本质上是检查两个东西: 1、此指令是否存在 2、此指令对应的指令内容存在; 以上二者都存在,返回true;
所以,只要在命令行输入此值令,并且指令存在,一定返回ture.(因为如果不指定参数内容,系统会默认true)
但是,在构造函数key_map中,如果指令参数没有填写。即使key_map中存在此指令,也会返回false。(因为没有参数内容)(另外;前提是命令行没有输入此指令)

bool has(const String& name) const;

3. check() : 查看指令是否有错误,无法解析

bool check() const;

4. about() : 输出指定内容

void about(const String& message);

5. printMessage() : 打印参考内容

 void printMessage() const

6. printErrors() : 打印错误

void printErrors() const;

3. 简明应用

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int main(int argc, const char ** argv)
{
   
   
    const String keys =
                        "{help h usage ? |          | print this message            }"
                        "{@test    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值