記得在while迴圈要設條件break跳出迴圈,否則avi檔無法開啟
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main()
{
CvCapture *capture;
IplImage *frame;
capture=cvCreateCameraCapture(0);
cvNamedWindow("Webcam",0);
CvVideoWriter *writer;
char AviFileName[]="Output.avi";
int AviForamt = -1;
int FPS = 30;
CvSize AviSize = cvSize(640,480);
writer=cvCreateVideoWriter(AviFileName,AviForamt,FPS,AviSize);
while(true)
{
frame = cvQueryFrame(capture);
cvWriteFrame(writer,frame);
if(cvWaitKey(20)>0) break;
}
cvReleaseCapture(&
capture);
cvReleaseVideoWriter(&
writer);
cvDestroyWindow("Webcam");
}
同時錄製兩個不同播放速度的avi檔:
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main()
{
CvCapture *capture;
IplImage *frame1;
IplImage *frame2;
capture=cvCreateCameraCapture(0);
cvNamedWindow("Webcam",0);
CvVideoWriter *writer1;
CvVideoWriter *writer2;
char AviFileName1[]="Output.avi";
char AviFileName2[]="Out.avi";
int AviForamt = -1;
int FPS1 = 25;
int FPS2 = 5;
CvSize AviSize = cvSize(640,480);
int AviColor = 1;
writer1=cvCreateVideoWriter(AviFileName1,AviForamt,FPS1,AviSize,AviColor);
writer2=cvCreateVideoWriter(AviFileName2,AviForamt,FPS2,AviSize,AviColor);
while(true)
{
frame1 = cvQueryFrame(capture);
cvWriteFrame(writer1,frame1);
cvWriteFrame(writer2,frame1);
cvShowImage("Webcam",frame1);
if(cvWaitKey(20)>0)
break;
}
cvReleaseCapture(&capture);
cvReleaseVideoWriter(&writer1);
cvReleaseVideoWriter(&writer2);
cvDestroyWindow("Webcam");
}