OpenCV C++学习笔记(7): 命令行解析
OpenCV里有个CommandLineParser, 可以用来解析命令行, 方便不少.
首先要定义一个keys:
const char* keys =
{
    "{help      |   | print this message}"
    "{@input i  |   | input video file}"
    "{@output o |   | output video file}"
    "{low       |35 | low value}"
    "{high      |100| high value}"
};
两根竖线里面是默认值
然后在int main(int argc, const char * argv[])里面, 要声明一个
    CommandLineParser parser(argc, argv, keys);
接着就可以处理parser里的东西了,
- 判断一个参数有没有, 可以用parser.has(参数名)
- 取得参数值, 可以用parser.get<类型>(参数名或者序号)
比如, 单独写一个函数来处理这些参数, 用传引用的方法来传递获取的参数值.
bool get_CLI(CommandLineParser &parser,
             String &filename,
             String &output_filename){
    parser.about("change video color and contrast");
    //If requires help show
    if (parser.has("help"))
    {
        parser.printMessage();
        return true;
    }
    filename= parser.get<String>("@input");
    if (parser.has("@output")){
        output_filename=parser.get<String>(1);
    }else{
        output_filename=
        filename.substr(0,filename.length()-4)+
        "_changed.MP4";
    }
    return false;
}