cvCreateVideoWriter

NO IMAGE

cvCreateVideoWriter

建立視訊檔案寫入器

typedef struct CvVideoWriter CvVideoWriter;

CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );

filename

輸出視訊檔名。

fourcc

四個字元用來表示壓縮幀的codec 例如,CV_FOURCC(‘P’,’I’,’M’,’1′)是MPEG-1 codec, CV_FOURCC(‘M’,’J’,’P’,’G’)是motion-jpeg codec等。 在Win32下,如果傳入引數-1,可以從一個對話方塊中選擇壓縮方法和壓縮引數。

fps

被建立視訊流的幀率。

frame_size

視訊流的大小。

is_color

如果非零,編碼器將希望得到彩色幀並進行編碼;否則,是灰度幀(只有在Windows下支援這個標誌)。

函式cvCreateVideoWriter建立視訊寫入器結構。

 

使用以下操作

pWriter = cvCreateVideoWriter(strAviName,CV_FOURCC(‘D’,’I’,’V’,’X’),fps,cvSize(nFrameW,nFrameH),1);

cvWriteFrame(pWriter,pFrame);

在系統中包含DIVX編碼器的前提下,可以將pFrame寫入AVI檔案strAviName中。

先開一個CvCapture及IplImage,用cvCreateCameraCapture()選定視訊裝置編號,給視窗命名,接著,就是寫入AVI檔案的重頭戲啦,用CvVideoWriter建立一個writer的資料結構,給它AVI檔名,AVI格式,FPS(frame
per second)每秒圖片播放頻率(即幀率),CvSize資料結構及Avi檔案的顏色種類,再用cvWriteFrame()寫入AVI檔案。最後,記得用 cvReleaseVideoWriter()把CvVideoWriter資料結構釋放,cvReleaseVideoWriter()非常重要,因為AVI檔案的檔案格式收尾就是要用到cvReleaseVideoWriter(),也就是說,如果不用到 cvReleaseVideoWriter(),AVI檔案就無法開啟.這邊,先從cvCreateCameraCapture()詳細敘述.

 

對於多視訊裝置的例項,假如,有兩Window XP(VFW)的視訊裝置要控制,則用兩個相同的cvCreateCameraCapture()函式及兩個相同的CV_CAP_VFW代號,而OpenCV會有介面來選擇目標裝置.
cvCreateCameraCapture(裝置數字代號);

cvCreateVideoWriter()
它要放的引數分別為AVI檔名,AVI格式,FPS,CvSize資料結構及AVI檔案的顏色種類,AVI的格式有很多種,由於影片有很多各個不同的壓縮格式,因此,被分為非常多類,許多的種類也只是在學術界採用,real player及media player很多都不適用,這邊壓縮格式的規格分為:

CV_FOURCC(‘P’,’I’,’M’,’1′) MPEG-1 codec
CV_FOURCC(‘M’,’J’,’P’,’G’) motion-jpeg codec (does not work well)
CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) MPEG-4.2 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) MPEG-4.3 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) MPEG-4 codec
CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) H263 codec
CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) H263I codec
CV_FOURCC(‘F’, ‘L’, ‘V’, ‘1’) FLV1 codec