IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Keyframes d'une image


Sujet :

OpenCV

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 56
    Points : 27
    Points
    27
    Par défaut Keyframes d'une image
    bonjour.
    je bute vraiment sur le rendu au bon framerate d une video enregistree avec une webcam, ce pour plusieurs raisons entremelees:

    je viens (après un bon petit moment ) de découvrir que même en appelant querryframe ou grabframe avec un timer au framerate désiré (25fps) que les images de ma caméra obtenues par le writer sont en images clé, et absolument pas au nombre d images fixé pour l aquisition. ceci semble varier de webcam à webcam.
    cette caméra a l air de faire du 16 ou du 20 images secondes.
    querryframe, SetProp ( FRAME_POS), se callent sur celles ci.

    les fonctions cvGet/SetProperties concernant le framerate ne fonctionnent pas, du coup comment avoir une approche correcte du problème?

    bref, par quel bout prendre cette histoire la ?

    je n utilise pas cvWait dans mon application car la partie video vient se rajouter dans une application temps réel.

    voilà !

  2. #2
    Membre actif Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Points : 207
    Points
    207
    Par défaut
    Première question, quel est le framerate réel de ta caméra, vois si tu veux le modifier via son driver.
    Ensuite les fonctions svSet et cvGetProperty sont assez incomplètes, a l'instar du réglage de la résolution qui nécessite des modification et une recompilation de highgui...
    A voir dans le version 1 si c'est toujours le cas..
    =>
    OpenCv Addict

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    bonjour vinsss84.

    merci de ta réponse.
    je peux pas par le driver modifier le frame rate, ce sur deux webcams à la maison.
    le problème c est d obtenir le frame rate réel de la caméra... en prenant le nombre d images aquises sur la durée, je dirais que je suis à 12 i / s. mais il faudrait que je puisse récupérer cette information de manière sure dans mon api ...

    est ce que une dll de higui correcte, ou en tout cas à jour est suffisante ou pas pour pouvoir beneficier des fonction cvSetProp et GetProp ? ou faut il telecharger un OpenCV 1.1 et tout recompiler ? ( glups gloups)
    je suis en version 1.0 ( devpak pour mingw32).

  4. #4
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Recupere le frame rate avec un running average (moyenne pondérer)
    ra_fps = old_fps*0.8 + 0.2*actu_fps;

    avec ce frame tu essaye de te caler une frame en dessous pour l'envoyer a ton application (11 fps par exemple) et tu fait joujou avec le cvWait() et cvTickCount() pour essayer d'avoir qcc de stable.

    Bon c'est peut etre la meilleur facon de faire mais moi je fait qqc du genre car je recupere depuis une camera ip qui a un frame rate tres variable!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    hello, merci elraton de cette info. c est une approche interressante en effet.
    ca m a permis de reverifier ma chaine logique.

    donc j arrive à recuperer le frame rate de ma video et a la jouer correctement, si je la fixe arbitrairement 12fpsà).
    mais je n arrive toujours pas à retrouver le fps de ma camera, ce qui est tres ennyeux car cela peut beaucoup varier !
    je n utilise pas les tick des opencv mais le systeme de timers de ma lib allegro.

    les donnees de contraste, de gain, ne sont helas pas non plus recuperables.

    je joins ici mon code d initialisation, car en GetCamProp j ai un resultat 0 pour les fps. as tu un idee ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    int InitVideo()
    {
     
    g_capture= cvCreateCameraCapture(0); //selection manuelle // 0 toutescvCaptureFromCAM(0);
    fps_video_rate=cvGetCaptureProperty( g_capture, CV_CAP_PROP_FPS)  ;
    frame=cvQueryFrame(g_capture);
    CvSize image_recording_size=cvSize(
    (int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_WIDTH ),(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_HEIGHT)
    )  ;
     
    camera_contraste=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_CONTRAST);
    camera_luminence=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_BRIGHTNESS);
    camera_saturation=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_SATURATION);
    camera_teinte=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_HUE);
    camera_gain=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_GAIN);
    int cx_size=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_WIDTH );
    int cy_size=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_HEIGHT);
     
    frame    = cvCreateImage(cvSize(cx_size,cy_size), IPL_DEPTH_8U ,3);// 8 bits 3 couches color
    VideoWrite= cvCreateVideoWriter( video_file_recorded,CV_FOURCC('X','V','I','D'), fps_video_rate, image_recording_size);
     
    video_size_x=video_image.Width();
    video_size_y=video_image.Height();
    camera_is_on=1;
     
    sprintf(string_Last_Order,">>Camera %d x %d FPS: %d ",cx_size,cy_size,fps_video_rate) ;
    return(0);   
    }

  6. #6
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Essaye avec openCV 1.1 pre alpha, mais je crois que tu peux oublier cvGetCaptureProperty( g_capture, CV_CAP_PROP_FPS); ce sont des functions qui ne marche pas vraiment

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    damned.... est ce l avis de tout le monde ? des fonctions mentionnees de partout qui ne fonctionnent pas ? j esperais avoir fait une erreur de code...
    je vos tiens au courant des que j ai installé une OpenCV v.1.1

  8. #8
    Membre actif Avatar de Vinsss84
    Profil pro
    Inscrit en
    Février 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 175
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par elraton Voir le message
    Essaye avec openCV 1.1 pre alpha, mais je crois que tu peux oublier cvGetCaptureProperty( g_capture, CV_CAP_PROP_FPS); ce sont des functions qui ne marche pas vraiment
    En effet, ces fonctions sont inutiles pour beaucoup des options, rentre dans highgui pour le constater
    =>
    OpenCv Addict

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    hum... j essaye d utiliser la pre release 1.1 mais elle plante sur le rendu des videos... du coup je retourne en 1.0. je n ai pas de besoins enormement pointus avec oCv...
    comment peut on sous windows a votre avis accéder aux paramètres de la camera pour les contrastes et parametrer les FPS ?

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  3. Réponses: 3
    Dernier message: 12/06/2002, 19h03
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo