转自:http://yester-place.blogspot.com/2008/06/opencv2.html
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資料結構及視窗介面資料結構做記憶體的釋放.
執行結果: