Захваченное OpenCV видео работает быстрее, чем в реальном времени? - PullRequest
1 голос
/ 04 января 2012

Я использую 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;
 }

Я не понимаю, почему, когда я использую cvGetCaptureProperty (CV_CAP_PROP_FPS) на 32-битной или 64-битной Windows 7 и Vs2008 & OpenCV 2.3.1, эта функция всегда возвращает 0, это неверно, пожалуйста, помогите мне, спасибо

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Это известная проблема, что cvGetCaptureProperty не работает должным образом, если cvQueryFrame не вызывается заранее.

0 голосов
/ 04 января 2012

cvSetCaptureProperty и cvGetCaptureProperty не всегда работают. Кроме того, вы пробовали fps = 30?

Стоит также отметить, что вам нужно воспроизводить видео с той же частотой кадров, что и улавливаемой частотой кадров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...