编程环境:Win7+VS2008+OpenCV2.3
#include <cv.h>
#include <highgui.h>
#include <ctype.h>
#include <stdio.h>
int main (int argc, char **argv)
{
CvCapture *capture = 0;
IplImage *frame = 0;
CvVideoWriter *vw;
int w = 250, h = 250;
int c, num = 0;
CvFont font;
char str[64];
capture = cvCaptureFromCAM (0);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h);
cvInitFont (&font, CV_FONT_HERSHEY_COMPLEX, 0.7, 0.7);
cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
frame = cvQueryFrame (capture);
CvSize size = cvGetSize(frame);
vw = cvCreateVideoWriter ("cap.avi",-1 , 15, size,1); // 创建写入器
if (!vw)
{
printf("create video error");
}
while (1)
{
frame = cvQueryFrame (capture);
_snprintf_c(str, 64, "%03d[frame]", num);
cvPutText (frame, str, cvPoint (10, 20), &font, CV_RGB (0, 255, 100));
cvShowImage ("Capture", frame);
cvWriteFrame (vw, frame);
num++;
c = cvWaitKey (10); // 在接下来的10ms中持续检测按键
if ('q' == c)
{
break;
}
}
cvReleaseVideoWriter (&vw); // 释放视频写入器
cvReleaseCapture (&capture);
cvDestroyWindow ("Capture");
return 0;
}
注:在压缩程序选择Microsoft RLE 和 VMnc v2 的时候, 无法录制成功。 选择其余几个均测试成功。