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 :

Problème avec cvSetCaptureProperty : va à la key frame


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 27
    Par défaut Problème avec cvSetCaptureProperty : va à la key frame
    Bonjour,

    j'utilise OpenCV pour lire des vidéos, mais cvSetCaptureProperty( capture , CV_CAP_PROP_POS_FRAMES , frameNumber ) ne va pas à la frame que je lui demande mais à une après, située entre 0 et 12 frames plus loin. ex: quand je lui demande une frame entre 1 et 12, il donne la 12, entre 13 et 24, la 24, etc.

    Je me demande si les frames qu'il donne ne sont pas les key frames de la vidéo.

    Est ce quelqu'un sait si ce problème est soluble? Cela est embettant car je voudrais pouvoir faire des sauts dans le temps (ex: avancer/reculer d'une minute) et lire en arrière.
    Merci de vos réponses!!!

    ci dessous un code minimal qui met en évidence mon problème son output.
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include "stdafx.h"
     
    #include <stdio.h>
    #include <highgui.h>
    #include <cv.h>
     
    int _tmain(int argc, _TCHAR* argv[]){
     
    	// Touche clavier
    	char key = 'a';
    	// Image
    	 IplImage *image;
    	// Capture vidéo
    	CvCapture *capture;
     
    	int frameNumber = 0;
     
    	capture = cvCreateFileCapture("h2.avi"); 
     
    	// Vérifier si l'ouverture du flux est ok
    	if (!capture) {		
    		printf("Ouverture du flux vidéo impossible !\n");
    	   return 1;	
    	}
     
    	// Définition de la fenêtre
    	cvNamedWindow("OpenCV Window", CV_WINDOW_AUTOSIZE);
     
    	// Boucle tant que l'utilisateur n'appuie pas sur la touche q (ou Q)
    	while(key != 'q' && key != 'Q') {
     
    	   // On récupère une image
    	   cvSetCaptureProperty( capture , CV_CAP_PROP_POS_FRAMES , frameNumber );
    	   image = cvQueryFrame(capture);
    	   frameNumber += 1;
    	   std::cout << "asked frame: " << frameNumber << "\t" << "video frame: " << cvGetCaptureProperty( capture , CV_CAP_PROP_POS_FRAMES ) << std::endl;
     
    	   // On affiche l'image dans une fenêtre
    	   cvShowImage( "OpenCV Window", image);	   
    	   key = cvWaitKey(500);
    	}
     
    	cvReleaseCapture(&capture);
    	cvDestroyWindow("OpenCV Window");
     
    	return 0;
     
    }
    asked frame: 0 video frame: 0
    asked frame: 1 video frame: 12
    asked frame: 2 video frame: 12
    asked frame: 3 video frame: 12
    asked frame: 4 video frame: 12
    asked frame: 5 video frame: 12
    asked frame: 6 video frame: 12
    asked frame: 7 video frame: 12
    asked frame: 8 video frame: 12
    asked frame: 9 video frame: 12
    asked frame: 10 video frame: 12
    asked frame: 11 video frame: 12
    asked frame: 12 video frame: 12
    asked frame: 13 video frame: 24
    asked frame: 14 video frame: 24
    asked frame: 15 video frame: 24
    asked frame: 16 video frame: 24
    asked frame: 17 video frame: 24
    asked frame: 18 video frame: 24
    asked frame: 19 video frame: 24

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
    je sais pas si l'erreur vient de la mais ton number frame n'est pas un double dans ton code.

    et selon ton ED ceci peut t'intéresser :
    NB This function currently does nothing when using the latest CVS download on linux with FFMPEG (the function contents are hidden if 0 is used and returned).

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/01/2015, 17h37
  2. Probléme avec un lien en pseudo-frame
    Par korrigan081 dans le forum Langage
    Réponses: 7
    Dernier message: 28/01/2010, 10h50
  3. problème avec la fermeture d'une frame
    Par kaninama dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 19/03/2007, 16h46
  4. Réponses: 21
    Dernier message: 02/10/2005, 19h05
  5. problème avec Foreign Key [Interbase 7.5] [Delphi 2005]
    Par xenos dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/09/2005, 11h21

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