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 :

free() d'une image


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut free() d'une image
    Bonjour,

    J'ai un programme qui fait de la simple reconnaissance de couleur avec OpenCV, à partir d'une web cam.
    Il prend donc une image, la traite puis l'affiche, et recommence.

    Mais je n'arrive pas à supprimer les images, une fois que je n'en ai plus besoin. Du coup au bout d'une minute, mon programme utilise déjà quelques centraines de Mo.


    voila une partie du code (la boucle) :
    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
     
        IplImage* img, hsv;
     
        // ouverture d'un flux vidéo venant d'une webcam
        CvCapture* capture = cvCreateCameraCapture( 0 );
     
        // On essaye de capturer une frame
        cvGrabFrame( capture )
     
        while(key != 'q')
        {
            // On décompresse la dernière frame récupérée...
            img = cvRetrieveFrame( capture );
     
            // On copie l'image
            hsv = cvCloneImage(img);
     
    	// RVB -> HSV
    	cvCvtColor(img, hsv, CV_BGR2HSV);
     
    	// Creation du masque
    	TraitementImage();
     
            // ... et on les montre à l'écran.
            cvShowImage( "video", img);
     
            // On attend 10 ms 
            key = cvWaitKey(10);
     
            // On essaye de capturer la frame suivante
            while(!cvGrabFrame( capture ));
        }
    J'ai essayé de faire cvReleaseImage(&img), mais ca ne marche pas (le prog plante).

    Savez vous comment faire ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Par défaut
    bonjour,

    The function cvRetrieveFrame returns the pointer to the image grabbed with cvGrabFrame function. The returned image should not be released or modified by user.
    Donc, le cvReleaseImage(&img) plante le programme.

    A vue de nez, la fuite de mémoire vient du hsv = cvCloneImage(img) et devrait se résoudre en ajoutant un cvReleaseImage(&hsv) dans la boucle de capture dès qu'on a plus besoin du hsv.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Free/local : générer une image PHP
    Par Bertrand79 dans le forum Langage
    Réponses: 8
    Dernier message: 16/08/2008, 20h53
  2. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  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