文档介绍:主要是cvWriteFrame时容易出现问题,解决方法:(1)(2)()下面是测试源码(需要装有摄像头)#include""#include""#include""#include<iostream>usingnamespacestd;intmain(){CvCapture*capture=cvCaptureFromCAM(-1);CvVideoWriter*video=NULL;IplImage*frame=NULL;intn;if(!capture)//如果不能打开摄像头给出警告{cout<<"Cannotopenthecamera."<<endl;return-1;}else{frame=cvQueryFrame(capture);//首先取得摄像头中的一帧video=cvCreateVideoWriter("",('X','V','I','D'),25,cvSize(frame->width,frame->height));//创建CvVideoWriter对象并分配空间//,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是if(video)//如果能创建CvVideoWriter对象则表明成功{cout<<"VideoWriterhascreated."<<endl;}cvNamedWindow("CameraVideo",1);//新建一个窗口inti=0;while(i<=200)//让它循环次自动停止录取{frame=cvQueryFrame(capture);//从CvCapture中获得一帧if(!frame){cout<<"Cannotgetframefromthecapture."<<endl;break;}n=cvWriteFrame(video,frame);//判断是否写入成功,如果返回的是,表示写入成功cout<<n<<endl;cvShowImage("CameraVideo",frame);//显示视频内容的图片i++;if(cvWaitKey(2)>0)break;//有其他键盘响应,则退出}cvReleaseVideoWriter(&video);cvReleaseCapture(&capture);cvDestroyWindow("CameraVideo");}return0;}网上还有个例子初始化:CvVideoWriter*writer=0;intisColor=1;intfps=25;//or30intframeW=640;//744forfirewirecamerasintframeH=480;//480forfirewirecameraswriter=cvCreateVideoWriter("",('P','I','M','1'),fps,cvSize(frameW,frameH),isColor);其他代码对应的编码器:('P','I','M','1')=MPEG-('M','J','P','G')=motion-jpegcodec(doesnotworkwell)('M','P','4