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

MFC Discussion :

[MFC]parcours d'image


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut [MFC]parcours d'image
    salut, pour une application que je developpe, je doit parcourir tout les picels de l'image et j'utilise le code suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     //On parcours les pixels de la fenetre
     for (int j=0;j<m_ClientRect.Height();j++)
     {
      for (int k=0;k<m_ClientRect.Width();k++)
      {
       pix.x=k;
       pix.y=j;
       ng=Calcul_ng(DC,pix);
       Tab_ng[ng]=Tab_ng[ng]+1;   
      }
     }
    le seul probleme, c'est que c'est tellement long que l'application plante avant la fin, pourtant ç marche quand je parcour les 2 premieres ligne de pixel.
    est ce que quelqu'un connaittrai une methode pour accelerer le parcours
    de l'image et donc evité que mon application plante?

  2. #2
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Que ce soit long c'est possible, mais si ça plante c'est peut-être à cause de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       ng=Calcul_ng(DC,pix);
       Tab_ng[ng]=Tab_ng[ng]+1;
    est-tu sur que ton tableau Tab_ng est suffisement dimensionné ?
    Que fait ta fonction Calcul_ng ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    je ne pense pas que ce la vienne de mon tableau car j'ai cree un
    int Tab_ng[256] et comme l'indice 0 de mon tableau reçoit le nombre de pixel avec le niveau de gris 0 est ainsi de suite, le tableau est donc assez grand je pense.
    quand a la fonction Calcul_ng calcul le niveau de gris est le code de la fonction est le 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 CImagerie_medicaleView::Calcul_ng(CDC* pDC,CPoint pixel)
    {
     pDC=GetWindowDC();
     DC=pDC;
     COLORREF im;
     int R,G,B;
     im=pDC->GetPixel(pixel);
     R=GetRValue(im);
     G=GetGValue(im);
     B=GetBValue(im);
     int ng=(R*0.299)+(B*0.587)+(G*0.114);
     
     return ng;
    }
    je ne pense pas non plus que sa vienne de la car quand je debug, je trouve le bon resultat.
    Comment faire pour accelerer le parcour des pixel?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    peut etre deja eviter de demander un dc a chaque pixel ...
    et qui dit GetWindowDC implique ReleaseDC.
    sinon fuite memoire et consommation des ressources GDI ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    ok, mais je peux le demander dans quelle fonction le DC?Dans le constructeurs de la classe View?

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    non surtout pas, une fenetre n'existe pas graphiquement dans le constructeur.
    tu peux faire juste au dessus de la boucle de traitement qui appelle cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     //On parcours les pixels de la fenetre
     for (int j=0;j<m_ClientRect.Height();j++)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    ok merci, et pour le release, je le fait a la fin de la fonction ou juste apres avoir fait mon getWindowDC?

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    a la fin de ta boucle.
    comprend ces fonctions comme l'ouverture d'un fichier et sa fermeture .

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    merci pour toutes tes reponses qui m'ont beaucoup eclairé .

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  2. [MFC] Utilisation d'image en couleur 32 bits
    Par vanitom dans le forum MFC
    Réponses: 1
    Dernier message: 03/08/2005, 11h13
  3. [MFC] ListCtrl et images
    Par joujou_le_fou dans le forum MFC
    Réponses: 2
    Dernier message: 26/07/2005, 14h49
  4. Réponses: 8
    Dernier message: 17/04/2005, 19h58
  5. [MFC]Insérer une image dans un CListCtrl
    Par DestyNov@ dans le forum MFC
    Réponses: 8
    Dernier message: 04/03/2005, 14h36

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