Enregistrement accelere - Opencv

cs_souma86 Messages postés 15 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 28 novembre 2011 - 12 oct. 2011 à 23:44
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 14 oct. 2011 à 09:30
Bonjour,
Voila pour mon projet de stage je dois traiter deux flux vidéos provenant de deux Webcams puis ensuite l'enregistrer. l'affichage se passe bien, aussi l'enregistrement .Mais lorsque je lis la video ".avi" enregistrée, elle est en accéléré. Je ne comprends pas pourquoi, car je lui donne bien le même FPS que celui du flux video de la camera, à savoir 25 frames par seconde.

Voici le code
Code :
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    CvCapture *capture = 0;
    CvCapture *capture1 = 0;
    IplImage  *frame = 0;
    IplImage  *frame1 = 0;
    int       key = 0;
    int frameW  = 640;
    int frameH  = 480; 
 
    /* initialize camera */
    capture = cvCaptureFromCAM( 0 );
    capture1 = cvCaptureFromCAM( 1 );
 
/* always check */
    if ( !capture ) {
        fprintf( stderr, "Cannot open initialize webcam!\n" );
        return 1;
    }
if ( !capture1 ) {
        fprintf( stderr, "Cannot open initialize webcam!\n" );
        return 1;
    }
 
    /* create a window for the video */
    cvNamedWindow( "result", CV_WINDOW_AUTOSIZE );
    cvNamedWindow( "result1", CV_WINDOW_AUTOSIZE );
 
CvVideoWriter *writer=cvCreateVideoWriter("out1.avi",CV_FOURCC('D','I','V','X'),25,cvSize(frameW ,frameH ),1); 
CvVideoWriter *writer1=cvCreateVideoWriter("out2.avi",CV_FOURCC('D','I','V','X'),25,cvSize(frameW ,frameH ),1); 
int i;
    while( key != 'q' ) {
        /* get a frame */
        frame = cvQueryFrame( capture );
frame1 = cvQueryFrame( capture1 );
 
        /* always check */
        if( !frame ) break;
if( !frame1 ) break;
 
        cvWriteFrame( writer, frame);
cvWriteFrame( writer1, frame1);
 
/* display current frame */
        cvShowImage( "result", frame );
cvShowImage( "result1", frame1 );
 
key = cvWaitKey( 50 );
    }
 
    /* free memory */
        cvDestroyWindow( "result" );
cvDestroyWindow( "result1" );
        cvReleaseCapture( &capture );
cvReleaseCapture( &capture1 );
cvReleaseImage(&frame);
cvReleaseImage(&frame1);
cvReleaseVideoWriter(writer);
cvReleaseVideoWriter(writer1);
    return 0;
}

Est ce qu'il y a quelqu'un qui peut m'aider?
Merci d'avance.

2 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
13 oct. 2011 à 09:03
Bonjour,
Juste une petite suggestion, tu ne peux pas obtenir le FPS de chaque caméra. Il semble que tu imposes ce flux de 25 qui n'est pas celui des caméras.
tu peux au moins le vérifer par la fonction indiquée par ce lien :
http://stackoverflow.com/questions/4100884/how-to-get-web-camera-fps-rate-in-opencv

Bon codage


louis
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
14 oct. 2011 à 09:30
Hello,
Ne serait-ce pas lié au mode Entrelacé?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous