2011年11月29日 星期二

opencv視訊

最近研究有發現opencv視訊把它給紀錄下來


視訊的使用也是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

沒有留言:

張貼留言