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 :

Comportement de VideoCapture.get(CV_CAP_PROP_POS_MSEC)


Sujet :

OpenCV

  1. #1
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut Comportement de VideoCapture.get(CV_CAP_PROP_POS_MSEC)
    Bonjour,

    Je me suis rendu compte récemment d'un comportement étrange de l'object VideoCapture.
    Le programme tout simple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main( int argc, char* argv[] )
    {
        VideoCapture cap;
        Mat frame;
     
        cap.open("video.avi");
     
        for (int i = 0; i < 10; i++)
        {
            cout << " timestamp = " << cap.get(CV_CAP_PROP_POS_MSEC) << endl;
            cap >> frame;
        }
        return 0;
    }
    Me donne l'affichage suivant :

    timestamp = 80
    timestamp = 120
    timestamp = 160
    timestamp = 200
    timestamp = 240
    timestamp = 280
    timestamp = 320
    timestamp = 360
    timestamp = 400
    timestamp = 440
    Le flux semble "sauter" 2 frames (FPS = 25).
    Sur une autre vidéo au format mp4, c'est 3 frames qui sont sautées.

    Ma première question porte donc sur ce comportement. Est-ce que le "header" de la vidéo est contenue dans ces premières frames ? Ce qui expliquerait que le flux les saute...

    Ma seconde question est directement liée, et porte sur le comportement de la méthode VideoCapture::set(CV_CAP_PROP_POS_MSEC, nb).

    Le programme suivant :

    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
    int main( int argc, char* argv[] )
    {
        VideoCapture cap;
        Mat frame;
     
        cap.open("video.avi");
        cap.set(CV_CAP_PROP_POS_MSEC, 80);
     
        for (int i = 0; i < 10; i++)
        {
            cout << " timestamp = " << cap.get(CV_CAP_PROP_POS_MSEC) << endl;
            cap >> frame;
        }
        return 0;
    }
    M'affiche :

    timestamp = 560
    timestamp = 600
    timestamp = 640
    timestamp = 680
    timestamp = 720
    timestamp = 760
    timestamp = 800
    timestamp = 840
    timestamp = 880
    timestamp = 920
    Et enfin, si je lis une première frame avant de faire le set(), j'obtiens un résultat différent :

    timestamp = -40
    timestamp = 0
    timestamp = 40
    timestamp = 80
    timestamp = 120
    timestamp = 160
    timestamp = 200
    timestamp = 240
    timestamp = 280
    timestamp = 320
    Pouvez-vous mexpliquer un tel comportement ?
    Pour info, voici les caractéristiques de la vidéo (j'ai un comportement tout aussi imprévisible avec d'autres vidéos d'autres formats)

    Metadata:
    encoder : Lavf53.1.0
    Duration: 00:01:44.76, start: 0.000000, bitrate: 5070 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 640x480 [PAR 1:1 DAR 4:3], PAR 16:15 DAR 64:45, 25 tbr, 25 tbn, 25 tbc
    Merci d'avance !

  2. #2
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    Je viens de trouver une explication éventuelle ici :
    https://code.ros.org/trac/opencv/ticket/1419

Discussions similaires

  1. [Débutant] Comportement étrange entre GUIs : [set(gcf,'UserData')] et [get(gcf,'UserData')]
    Par FunkyDidi dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 31/07/2014, 05h20
  2. Réponses: 1
    Dernier message: 19/09/2011, 20h10
  3. Réponses: 1
    Dernier message: 23/05/2008, 13h13
  4. Comportement étrange d' apt-get install
    Par Captain_futur dans le forum Debian
    Réponses: 2
    Dernier message: 06/04/2006, 22h57
  5. url d'une page asp ou upload avec get
    Par taupin dans le forum ASP
    Réponses: 18
    Dernier message: 22/08/2003, 14h25

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