编程环境: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 的时候, 无法录制成功。 选择其余几个均测试成功。