I am trying to create an avi video from my webcam output using opencv. No exceptions are thrown, however the avi file it creates is 414 bytes in size and does not grow.
Also it will not play with any media player. I suspect there is something wrong with the writing to file part.
Here is the code:
CvCapture *capture = cvCaptureFromCAM( 0 );
int width = ( int )cvGetCaptureProperty( capture,
CV_CAP_PROP_FRAME_WIDTH );
int height = ( int )cvGetCaptureProperty( capture,
CV_CAP_PROP_FRAME_HEIGHT );
CvVideoWriter *writer = cvCreateVideoWriter("CamCapture.avi",
-1,30, cvSize( width, height ) );
cvNamedWindow("capWindow", CV_WINDOW_AUTOSIZE);
IplImage *frame = 0;
// this returns 0 not sure why ??
//double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
double fps = 30;
while( 1 )
{
frame = cvQueryFrame( capture );
cvShowImage("capWindow",frame);
cvWriteFrame( writer, frame );
char c = cvWaitKey(1000/fps);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvReleaseVideoWriter( &writer );
cvDestroyWindow( "capWindow" );
I have referenced and tried the following samples with no luck:
Use below code to write AVI format from capturing camera input.
Dont use outdated C, use C++ api, it is easy to use and simple, for example the above code can be rewritten in C++ like,