opencv學習筆記——cv::CommandLineParser函數詳解


命令行解析類CommandLineParser

該類的作用主要用於命令行的解析,也就是分解命令行的作用。以前版本沒這個類時,如果要運行帶參數的.exe,必須在命令行中輸入文件路徑以及各種參數,並且輸入的參數格式要與代碼中的if語句判斷內容格式一樣,很不方便。另外如果想要更改輸入格式的話在主函數文件中要相應更改很多地方。現在有了這個類,只需要改keys里面的內容就可以了 。

在OpenCV源碼中,其聲明位於頭文件 utility中。因此在使用前,一般需要進行頭文件包含。

#include <opencv2/core/utility.hpp>

類成員

public:
 CommandLineParser (int argc, const char *const argv[], const String &keys);//構造函數
 CommandLineParser (const CommandLineParser &parser);//拷貝構造函數
 ~CommandLineParser ();//析構函數
 void   about (const String &message);
 bool   check () const;

template<typename T > 
T   get (const String &name, bool space_delete=true) const;
template<typename T >
T   get (int index, bool space_delete=true) const;

String  getPathToApplication () const;
bool    has (const String &name) const;
CommandLineParser & operator= (const CommandLineParser &parser);//賦值運算符重載
void    printErrors () const;
void    printMessage () const;

protected:
void    getByIndex (int index, bool space_delete, int type, void *dst) const;
void    getByName (const String &name, bool space_delete, int type, void *dst) const;
Impl *  impl;

注釋的幾條函數為常用函數:

1、構造函數------接收命令行輸入的指令

2、get-----獲得指定的參數的內容

3、has----在get之前可以先檢查是否含有此指令

4、check---在使用這些參數之前,檢查是否有解析錯誤的現象;

使用示例

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

Reference
[1] OpenCV官網
[2] OpenCV中CommandLineParser類


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM