OpenCV捕获的视频运行速度比实时更快?

时间:2012-01-04 16:29:45

标签: windows visual-studio-2008 visual-c++ opencv

我正在使用openCV从摄像头捕获视频并存储到avi文件,问题是当我完成捕获并运行avi文件时,视频流看起来很快......

这是代码

int isColor = 1;
 int frameW  = 640;
 int frameH  = 480;
 int fps     = 25;

 CvCapture* capture = cvCaptureFromCAM(0);
 assert( capture != NULL );

 cvNamedWindow( "Webcam", CV_WINDOW_AUTOSIZE);

 CvVideoWriter *writer = cvCreateVideoWriter(
   "out.avi",
   CV_FOURCC('M','J','P','G'),
   fps,
   cvSize(frameW,frameH),
   isColor
  );

 IplImage* frame = cvQueryFrame( capture );

 while( (frame = cvQueryFrame( capture )) != NULL ) {
  cvWriteFrame(writer, frame);
  cvShowImage("Webcam", frame);
  char c = cvWaitKey( 33 );
  if ( c == 27 ) break;
 }

我不明白为什么当我在Windows 7 32位或64位和Vs2008&上使用cvGetCaptureProperty(CV_CAP_PROP_FPS)时OpenCV 2.3.1,这个函数总是返回0,这是假的,请帮帮我,谢谢

2 个答案:

答案 0 :(得分:0)

cvSetCaptureProperty和cvGetCaptureProperty并不总是有效。另外,你试过fps = 30吗?

值得注意的是,您需要以与捕获fps相同的fps播放视频。

答案 1 :(得分:0)

cvGetCaptureProperty无法正常工作是一个已知问题,除非事先调用cvQueryFrame。