OpenCV salvando vídeo para arquivo

Acho que minha pergunta é bem básica, mas estou escrevendo este código no OpenCV para simplesmente capturar dados de vídeo da webcam e salvá-los em arquivos. Agora o problema é que o arquivo é feito no destino desejado, inicialmente é de cerca de 286 bytes de tamanho. Então, quando atribuo o primeiro quadro ao ponteiro, o tamanho aumenta para 414 bytes. No entanto, quando executo o código inteiro, o tamanho do vídeo salvo permanece 414 bytes. É claro que, como resultado, meu media player não pode reproduzir o arquivo e diz "não está em um formato que o QuickTime Player entenda". e o mesmo acontece com o player VLC.

Aqui está o meu código para o mesmo:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

int main( int argc, char** argv ) {
CvCapture* capture;

capture = cvCreateCameraCapture(0);

assert( capture != NULL );

IplImage* bgr_frame = cvQueryFrame( capture );

CvSize size = cvSize(
                     (int)cvGetCaptureProperty( capture,
                                               CV_CAP_PROP_FRAME_WIDTH),
                     (int)cvGetCaptureProperty( capture,
                                               CV_CAP_PROP_FRAME_HEIGHT)
                     );

cvNamedWindow( "Webcam", CV_WINDOW_AUTOSIZE );

CvVideoWriter *writer = cvCreateVideoWriter(    "/Users/user/Desktop/OpenCV_trial/OpenCV_trial/vidtry.AVI",
                                            CV_FOURCC('D','I','V','X'),
                                            30,
                                            size
                                            );

while( (bgr_frame = cvQueryFrame( capture )) != NULL ) 
{
    cvWriteFrame(writer, bgr_frame );
    cvShowImage( "Webcam", bgr_frame );
    char c = cvWaitKey( 33 );
    if( c == 27 ) break;
}
cvReleaseVideoWriter( &writer );
cvReleaseCapture( &capture );
cvDestroyWindow( "Webcam" );
return( 0 );
}

Eu não sei porque isso está acontecendo. Estou usando o mac OSX Lion e executando o Xcode.

Alguém já enfrentou esse problema antes? Se sim, como eu poderia resolver isso?

Obrigado!

-Yash

questionAnswers(3)

yourAnswerToTheQuestion