opencv图像处理:CommandLineParser类

看到有几本新的opencv书出来,梳理一下之前没看到过的知识:
CommandLineParser类:可以帮助管理需要输入的命令行参数
CommandLineParser的构造函数为:
CommandLineParser parser(argc,argv,keys):其中前2个参数是命令行传过来的,第3个就是刚刚定义的keys了;
第三个参数keys可以定义为如下:
const char* keys =
{
“{help h usage ? | | print this message}”
“{@video | | Video file ,if not defined try tp use webcamera }”
};
每一行都有这种模式:
{ name_param | default_value | description}
name_param 前面可以带有@,这样定义了这个参数的默认输入值,可以使用多个name_param
CommandLineParser类包含一些方法:
.has方法检查参数是否存在,这在这个定义的keys中检查用户是否添加——usage或者?参数
.printMessage可以显示所有描述参数

.get<typename>(parameterName)

可以访问和读取任意输入的参数
.printErrors() 用来打印错误

关于CommandLineParser类还可以看下面几篇博客:
http://blog.csdn.net/yzhang6_10/article/details/51074305
http://www.cnblogs.com/tornadomeet/archive/2012/04/15/2450505.html
代码:

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

#include<opencv2\core.hpp>
#include<opencv2\highgui.hpp>
#include<opencv2\opencv.hpp>

using namespace cv;

const char* keys =
{
    "{help h usage ? | | print this message}"
    "{@video | | Video file ,if not defined try tp use webcamera }"
};

int main(int argc,const char** argv)
{
    CommandLineParser parser(argc,argv,keys);
    parser.about("Chapter 2. v1.0.0");
    if (parser.has("help"))
    {
        parser.printMessage();
        return 0;
    }
    String videoFile = parser.get<String>(0);
    if (!parser.check())
    {
        parser.printErrors();
        return 0;
    }

    VideoCapture cap;
    if (videoFile != "")
    {
        cap.open(videoFile);
    }
    else
    {
        cap.open(0);
    }
    if (!cap.isOpened())
    {
        return -1;
    }
    namedWindow("video", 1);
    for (;;)
    {
        Mat frame;
        cap >> frame;
        imshow("video", frame);
        if (waitKey(30) >= 0)
        {
            break;
        }
    }
    cap.release();

    return 0;
}

这是一个打开摄像头代码,之前用了一下CommandLineParser类
运行结果:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值