OpenCV程序设计介绍(2)

视频的处理也是OpenCV的基本功能之一,它可以做连续性的影像处理,比capCreateCaptureWindow()这个函数好用多 了,capCreateCaptureWindow()在"vfw.h"里,只能在MicroSoft的Visual C++及 Borland C++ builder使用,Dev-C++4.9.9.2不提供此函数,当然啦,OpenCV对于视频的处理提供了比 capCreateCaptureWindow()更强大的功能.

程序代码部分

 

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main()
{
    CvCapture *capture;
    IplImage *frame;
    capture =cvCaptureFromCAM(0) ;
    cvNamedWindow("Webcam",0);
    while(true)
    {
        frame = cvQueryFrame(capture);
        cvShowImage("Webcam",frame);
        if(cvWaitKey(10)>=0)
        {
              break;
        }
    }
    cvReleaseCapture(&capture);
    cvDestroyWindow("Webcam");
}
 


里面使用到CvCapture及IplImage两个数据结构,CvCapture是一个Interface的数据结构,为一个数据结构的雏形,无任何的变量类型存在,由cvCaptureFromCAM(0)来选定Webcam装置,cvCaptureFromCAM(0)的0代表自动侦测视频装置,如果有两台以上的Webcam则就用连续两个cvCaptureFromCAM(0)函数来撷取,接着,就用while(true)的无限循环来捕捉连续影像的图像画面,cvQueryFrame()则用来得到每毫秒显示出来的frame这里由cvWaitKey(10)来控制采集时间,每延迟10毫秒捕捉一次视频画面,cvWaitKey()为键盘事件,每超过10毫秒则会回传-1,因此,画面会因cvWaitKey(10)而延迟10毫秒,接着由无限循环来继续播放,当键盘事件发生的时候则会跳出whlie的无限循环.接着就把CvCapture数据结构及窗口接口数据结构做內存的释放.


执行结果: