視訊的使用也是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資料結構及視窗介面資料結構做記憶體的釋放.
轉貼http://yester-place.blogspot.com/2008/06/opencv2.html
沒有留言:
張貼留言