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类
运行结果:

时间: 2024-09-08 08:15:54

opencv图像处理:CommandLineParser类的相关文章

JMagick实现基本图像处理的类实例

  本文实例讲述了JMagick实现基本图像处理的类.分享给大家供大家参考.具体分析如下: JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对 ImageMagick API的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

JMagick实现基本图像处理的类实例_java

本文实例讲述了JMagick实现基本图像处理的类.分享给大家供大家参考.具体分析如下: JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对 ImageMagick API的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快. /** * JMagickHandler.java * * Author: Winter Lau * 2007-7-11 */ package com.eportal.img; import java.aw

《OpenCV图像处理》——1.4 使用OpenCV创建用户项目

1.4 使用OpenCV创建用户项目 本书中,我们假定C++是图像处理应用编程的主要语言,尽管实际上也提供了其他编程语言的接口和封装器(例如,Python.Java.MATLAB/Octave等). 本节说明如何用OpenCV的C++ API(一种易用的跨平台框架)开发应用.1.4.1 库的一般使用方法 为了用C++开发一个OpenCV应用,需要在代码中: 包含OpenCV的头文件定义 链接OpenCV库(二进制文件),以获取最终的可执行文件 OpenCV头文件位于OPENCV_BUILD\in

OpenCV图像处理--将图像裁剪为圆形

1,需求 为了便于项目前端展示用户头像,需要将头像处理为圆形,非圆形区域设置为透明.其实,前端可以在显示的时候处理,但是前端采用WebGL,暂时搞不定,所以由后端进行图像的一次性加工. 于是,我们尝试用Linux工具Convert来完成,但是,百思无解,后续决定采用Python+OpenCV. 2,实现 优秀的代码不需要解释,直接看代码吧,O(∩_∩)O. #coding:utf8 import numpy as np import cv2 from matplotlib import pypl

OPENCV图像处理(二):模糊

模糊是基本的图像处理方法. 在介绍这两种方法之前先来介绍两种常见的噪声: 椒盐噪声 椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声.椒盐噪声分为两种即胡椒噪声和盐噪声,胡椒噪声是黑色的,属于低灰度噪声,盐噪声是白色的,属于高灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点.去除椒盐噪声最常用的算法是中值滤波. 高斯噪声 高斯噪声是一种随机噪声,其幅度的统计规律服从高斯分布(正态分布),去高斯噪声最常用的算法是高斯滤波. 而这些噪声出现在图片上某一点时都是比较突兀的

OPENCV图像处理提高(二):模糊

模糊是基本的图像处理方法. 在介绍这两种方法之前先来介绍两种常见的噪声: 椒盐噪声 椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声.椒盐噪声分为两种即胡椒噪声和盐噪声,胡椒噪声是黑色的,属于低灰度噪声,盐噪声是白色的,属于高灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点.去除椒盐噪声最常用的算法是中值滤波. 高斯噪声 高斯噪声是一种随机噪声,其幅度的统计规律服从高斯分布(正态分布),去高斯噪声最常用的算法是高斯滤波. 而这些噪声出现在图片上某一点时都是比较突兀的

《OpenCV图像处理》——1.6 读取和写入视频文件

1.6 读取和写入视频文件 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列.在OpenCV中,VideoCapture类和VideoWriter类为视频处理中所涉及的捕获和记录任务提供了一个易用的C++ API. 1.?recVideo示例代码 recVideo示例是一个简短的代码片段,使您可以了解如何使用一个默认摄像机作为一个捕捉设备,来抓取帧,对它们进行边缘检测,并且将新的转换视频帧作为一个文件保存.而且,创建两个窗口同时显示原始帧和处

《OpenCV图像处理》——1.3 OpenCV的结构

1.3 OpenCV的结构 一旦安装了OpenCV,在OPENCV_BUILD\install目录中将加入三种类型的文件: 头文件:这些文件位于OPENCV_BUILD\install\include子目录下,用于使用OpenCV开发新项目. 库的二进制文件:这些文件是静态库或动态库(依赖于使用CMake对选项的选择),它们包含了每个OpenCV模块的功能.这些文件位于bin子目录下(例如,使用GNU编译器时,位于x64\mingw\bin). 示例二进制文件:这些文件使示例在库下可执行.这些示

《OpenCV图像处理》——导读

前言 OpenCV,可以说是使用最广泛的计算机视觉库,它包括几百个易用的图像成像和视觉函数,既可用于学术研究,也可用于工业领域.随着摄像机越来越便宜和对影像学特征需求的增长,无论是对于台式机还是移动平台,OpenCV的应用范围都有了显著增长. 本书结合示例讲述OpenCV的主要图像处理算法.OpenCV方面的其他书籍试图说明其基础理论,或提供接近完整的大型应用程序示例,而本书则针对这样的读者而编写:他们想要尽量快速地得到一个易于理解的工作示例,并可能在此基础上开发一些附加功能. 本书以一个介绍性