Enregistrement accelere - Opencv

Signaler
Messages postés
15
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
28 novembre 2011
-
Messages postés
15151
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 octobre 2021
-
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

Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
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
Messages postés
15151
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 octobre 2021
99
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...