OpenCV Speichern von Videos in eine Datei

Ich denke, meine Frage ist ziemlich einfach, aber ich schreibe diesen Code in OpenCV, um einfach Videodaten von der Webcam zu erfassen und in einer Datei zu speichern. Jetzt ist das Problem, dass die Datei am gewünschten Ziel erstellt wird, sie ist anfänglich ungefähr 286 Bytes groß. Wenn ich dann den ersten Frame dem Zeiger zuordne, erhöht sich die Größe auf 414 Bytes. Wenn ich jedoch den gesamten Code ausführe, bleibt die Größe des gespeicherten Videos 414 Byte. Infolgedessen kann mein Mediaplayer die Datei natürlich nicht abspielen und sagt, dass sie nicht in einem Format vorliegt, das QuickTime Player versteht. und das gleiche passiert mit dem VLC-Player.

Hier ist mein Code für das gleiche:

#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 );
}

Ich weiß nicht, warum das passiert. Ich benutze den Mac OSX Lion und starte Xcode.

Hat jemand vor diesem Problem konfrontiert? Wenn ja, wie könnte ich das lösen?

Vielen Dank!

-Yash

Antworten auf die Frage(3)

Ihre Antwort auf die Frage