OpenCV实例:基于videoInput的视频录像机

本文介绍了如何在Windows环境下利用OpenCV 2.0内置的videoInput库创建一个视频录像机应用。通过设置项目、编写代码、配置编译器和链接器选项,实现从摄像头捕获视频并保存为.avi文件。文章详细阐述了每个步骤,并提供了代码示例。
摘要由CSDN通过智能技术生成

对视频进行读写,可使用OpenCV提供的CvCapture和CvVideoWriter。

在Windows平台下,OpenCV以前提供的读写功能采用VFW,效率低下且有些格式支持不好。而 OpenCV 2.0 内置了videoInput Library,可以自动在VFW和DirectShow间切换。videoInput是老外写的功能强大的开源视频处理库。

 

0. Windows SDK 

    微软每推出一个重要的windows版本,一般都会同时推出一个SDK(Software Development Kit)。SDK包含了开发该windows版本所需的windows函数和常数定义、API函数说明文档、相关工具和示例。

 

    安装Windows 7 SDK,下载地址:

          http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en

 

1. 新建项目

    启动Code::Blocks,选择File->New->Project, 项目类型选择:Console Application,项目名为:MyRecorder,其他按默认选择。

 

2. 代码

    打开main.cpp文件,输入以下代码:

 

#include <iostream>

#include <videoInput.h>
#include <opencv2/opencv.hpp>

using namespace std;

int main(int argc, char** argv)
{
    int width = 640;
    int height = 400;
    char* name = "test.avi";

    name = argc == 2 ? argv[1] : name;
    if(argc == 3)
    {
        width = atoi(argv[1]);
        height = atoi(argv[1]);
    }
    else if(argc == 4)
    {
        name = argv[1];
        width = atoi(argv[2]);
        height = atoi(argv[3]);
    }

    IplImage* pImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);

    videoInput video;
    video.setupDevice(0, width, height);
    video.showSettingsWindow(0);

    CvVideoWriter* writer = 0;
    writer = cvCreateAVIWriter(name, -1, 25, cvSize(width, height), 1);

    cvNamedWindow("video", 1);
    pImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);

    while(1)
    {
        if(video.isFrameNew(0))
        {
            video.getPixels(0, (unsigned char*)pImg->imageData, false, true);
            cvWriteFrame(writer, pImg);
            cvShowImage("video", pImg);
            if(cvWaitKey(1) == 27)
                break;
        }
    }

    cvReleaseVideoWriter(&writer);
    cvReleaseImage(&pImg);
    cvDestroyAllWindows();

    return 0;
}

3. 设置

    打开Project-〉Build Options选项卡

    选择Search directories,在Compiler里Add进以下目录:

         C:/OpenCV2.2/include

         C:/OpenCV2.2/3rdparty/include

 

    在Linker里Add进以下目录:

         C:/OpenCV2.2/lib

         C:/OpenCV2.2/3rdparty/lib

         C:/Program Files/Microsoft SDKs/Windows/v7.0A/Lib

 

     选择Linker settings,添加以下文件:

         C:/OpenCV2.2/lib 此目录下的所有文件

         C:/OpenCV2.2/3rdparty/lib 此目录下的所有文件

         C:/Program Files/Microsoft SDKs/Windows/v7.0A/Lib 此目录下所有ole开头的文件

 

4. 编译

    点击Build->Build编译项目。

 

5. 运行

    点击Build-〉Run

 

    会出现三个窗口:

    视频编码选择:

   

    根据系统安装和OpenCV支持的编码格式,选择合适的格式来生成avi文件,我测试可以用的是Microsoft Video 1格式,点确定后即可看到视频窗口。

 

    视频属性设置窗口:

   

    可以设置视频的一些效果。

 

    在项目的根目录下会产生一个avi文件,可以直接用播放器来播放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值