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 :

Gestion de la mémoire du PC pour du traitement en temps réel


Sujet :

OpenCV

  1. #1
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut Gestion de la mémoire du PC pour du traitement en temps réel
    Voila mon probleme , je traite la video de ma camera pour detecter le mouvement "en direct"(temps réel) mais le probleme c'est qu'au bout d'un moment mon PC en peux plus et la memoire physique est pleine! je connais vraiment pas grand chose en gestion memoire(j'ai toujours négligé ce probleme auparavant ) donc si qq'un est pres a ce jeter dans mon code il est en piece jointe(il pas mal commenté ) ou bien si qq'un a une idée...

    en fait il faudrait vider la memoire a la fin de chaque trame traitée,non? mais tout ces données sont mis dans la memoire vive ou dans le cache, non? (je dis peut etre une enorme connerie!)

    bref merci de m'aider
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 538
    Points : 5 224
    Points
    5 224
    Par défaut
    effectivement, je pense que tu as un gros problème de fuite mémoire à partir de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImEtiqu = cvCloneImage(ImReconst);
    tu crées une copie de ton image, mais il faudrait peut-etre penser à détruire l'image qui ne sert pas
    j'imagine que OpenCV détruit l'image qui a été affichée ?

    également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          /* Initialize images */
          averageImage = cvCloneImage(grayImage);
          subImage = cvCloneImage(grayImage);
          sumImage = cvCloneImage(grayImage);  
          thresholdImage = cvCloneImage(grayImage); 
          erodeImage = cvCloneImage(grayImage);
          dilateImage = cvCloneImage(grayImage);
          rebuildImage = cvCloneImage(grayImage);
          labelImage = cvCloneImage(grayImage);
    toutes ces copies d'images sont détruites une fois que tu n'en a plus besoin ?

    ton pc doit vite en avoir ras-la-gu...mémoire

  3. #3
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    oui j'y ai pensé alors j'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          cvReleaseImage(&grayImage);
          cvReleaseImage(&sumImage);
          cvReleaseImage(&averageImage);
          cvReleaseImage(&subImage);
          cvReleaseImage(&thresholdImage);
          cvReleaseImage(&erodeImage);
          cvReleaseImage(&dilateImage);
          cvReleaseImage(&rebuildImage);
          cvReleaseImage(&labelImage);
    mais ca plante si je rajoute ca

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 538
    Points : 5 224
    Points
    5 224
    Par défaut
    parmis ces "images" il y en a une qu'il ne faudrait peut-etre pas libérer ?
    ton programme affiche une image ?
    si oui, je pense que celle-là il ne faut pas la supprimer toi même

  5. #5
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    la fonction callback affiche des images oui mais aucune ne doit etre gardées a part celle declarées en globale qui servent de buffer... mais en tout cas avec cette methode j'ai l'impression que ca fonctionne mieux maintenant quand je n'effectue pas l'operation d'etiquetage!le probleme est cerné! en gros si je fait l'etiquetage(labeling) et je fait le release des images ca plante et si je vire l'un des 2 ca fonctionne( asavoir l'appel de la fonction labeling ou le release des images)

    je comprend pas trop


    en tout cas merci pour ton aide

Discussions similaires

  1. [HLSL XNA]aide pour algo d'ombres temps réel
    Par Acropole dans le forum XNA/Monogame
    Réponses: 3
    Dernier message: 31/07/2008, 16h49
  2. Quelle solution pour une application web "temps réel"?
    Par izguit dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 27/03/2008, 12h04
  3. [IA] Pour un jeu en "temps réel"
    Par Bleys dans le forum Intelligence artificielle
    Réponses: 7
    Dernier message: 19/07/2007, 12h55
  4. [PIC] Quelle puce pour échantillonnage et traitement audio temps réel ?
    Par kromartien dans le forum Autres architectures
    Réponses: 3
    Dernier message: 15/03/2007, 22h45

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