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

Discussion :

Histogramme d'une image RGB

  1. #1
    Membre actif
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut Histogramme d'une image RGB
    bonjour,
    je veux récupérer l'histogramme d'une image couleur RGB
    j'ai un petit problème dans la lecture de la valeur du pixel de l'image ( de type QImage ) dans les 3 plans R,G et B,
    je ne sais pas comment ça se fait !!
    quelqu'un peut m'aider

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Par défaut
    Bonjour,
    Le plus simple est d'utiliser la classe QColor. Dans la classe QImage, tu as la méthode pixel(int x, int y) qui retourne un QRgb. C'est un typedef sous la forme d'un unsigned int contenant un quadruplet avec les 3 composantes + le canal alpha.

  3. #3
    Membre actif
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut
    Voici la fonction que j'ai testé sur une image, mais le fichier texte resultant ne contient que des zeros !!!!
    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
    50
     
    float fenprincipale::extractGlobalSignature(QString  img ) {
        QImage  image(img);
        QRgb	pix;
          vector<vector<vector<double> > > array3D;
           array3D.resize(256);
             for (int i = 0; i < 256; ++i) {
               array3D[i].resize(256);
     
               for (int j = 0; j < 256; ++j)
                 array3D[i][j].resize(256);
             }
             QFile file("sig.txt");
             if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
                 return 0;
             QTextStream flux(&file);
              flux.setCodec("UTF-8");
           unsigned int idx = 0;
           unsigned int bin = 8;
           for (unsigned int x = 0; x < image.width(); x++)
     
           {
               for (unsigned int y = 0; y < image.height(); y++)
               {
                  // idx = 0;
                   pix = image.pixel(x, y);
                   //cout << endl << qBlue(pix) << "   " << qGreen(pix) << "   " << qRed(pix)<<"   "<<pix;
     
                   int r =qRed(pix)+1;
                   int g=qGreen(pix)+1;
                   int b=qBlue(pix)+1;
     
                      // idx = bin * idx + int(floor(image.pixel(x, y, channel) * bin));
     
                   array3D[r][g][b]++;
                  // flux<<array3D[r][g][b] ;
                 // flux<< array3D[qBlue(pix)][qGreen(pix)][qRed(pix)]<<endl  ;
               }
           }
           for (int i=0;i<256;i++)
           {
                   for(int j=0;j<256;j++)
                          { for (int k=0;k<256;k++)
                               flux << array3D[i][j][k]  ;
                   }
           }
     
     
    return 1;
    }

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 129
    Par défaut
    Commences par faire un affichage de tes valeurs r, g et b quand tu les crées.

    Ensuite, quand tu fais : , réfléchis à ce que tu fais et à quelle position tu veux lire... Attention à la conversion int<>double au passage.

    Je pense que tu veux plutot un tableau 3D, avec deux dimensions pour les positions de pixels : une pour x, une pour y, puis, une dimension pour la valeur qRGB...

Discussions similaires

  1. l'histogramme d'une image RGB
    Par jamibt dans le forum C
    Réponses: 3
    Dernier message: 28/04/2011, 21h13
  2. Histogramme d'une image BMP en niveaux de gris?
    Par bahiatoon dans le forum C++Builder
    Réponses: 13
    Dernier message: 19/11/2008, 16h36
  3. histogramme d'une image coloré
    Par kachaloarmin dans le forum Imagerie
    Réponses: 1
    Dernier message: 13/11/2007, 19h49
  4. Transposée d'une image RGB
    Par silainos dans le forum Images
    Réponses: 4
    Dernier message: 01/10/2007, 03h45
  5. Conversion d'une image rgb en hsl
    Par ranell dans le forum Images
    Réponses: 13
    Dernier message: 01/03/2007, 22h03

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