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

C Discussion :

[imagemagick] probl�me pour r�cuperer la valeur d'un pixel


Sujet :

C

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par d�faut [imagemagick] probl�me pour r�cuperer la valeur d'un pixel
    Nous travaillons actuellement sur un projet d'imagerie. Nous sommes 3.
    Le soucis qui se pose � nous est pour r�cup�rer la valeur d'un pixel ( sous forme 0 ou 1 ) d'une image. Nous utilisons les fonctions de imagemagick ici

    MagickGetImagePixelColor

    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
    int main () {
    struct file *f = NULL;
    struct file *tete = f;
    struct file *aux = f;
    
    /*on ouvre l'image (image magick)*/
    
    MagickWandGenesis();
    magick_wand=NewMagickWand();
    
    
      status=MagickReadImage(magick_wand,"C:\\Users\\Utilisateur\\Desktop\\image_test.jpeg");
    
    /* Pour r�cup�rer la hauteur et la largeur de l'image*/
    width = MagickGetImageWidth(magick_wand);
    height = MagickGetImageHeight(magick_wand);
    printf("\n width = %d\n height = %d\n",width,height);
    
    
    
        if (f == NULL){ //initialisation des 8 premiers points
            printf("\n f est nul\n");
            //coordonn�es du point central de l'image
            X_milieu = width/2;
            Y_milieu = height/2;
            f = new_point (X_milieu+1,Y_milieu+1,0,NULL);
            tete = f; //pour pouvoir rattacher la derni�re cellule de la file � la premi�re pour en faire une file circulaire
            aux = f;
            printf(" width : %d, height : %d\n",f->x,f->y);
    
           couleur = MagickGetImagePixelColor(magick_wand,f->x,f->y,color);
           
            printf("couleur %p\n",couleur);
    J'ai mis ici la parti du code qui contient le soucis (si jamais il faut plus je peux le mettre )

    mon soucis c'est que quelque soit l'image l'image que j'ouvre, j'ai toujours 000000 si j'utilise un %p dans le printf et 0 si j'utilise un %d.



    Si quelqu'un peut me dire si oui ou non il y a une erreur dans l'utilisation de cette fonction merci

  2. #2
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Par d�faut
    Bonjour,

    Quand tu testes couleur, tu testes une valeur de retour (une sorte de HRESULT) et en aucun la couleur elle m�me.

    Le prototype de la fonction est :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    WandExport MagickBooleanType MagickGetImagePixelColor(MagickWand *wand, const long x,const long y,PixelWand *color)
    Pour r�cup�rer le code couleur, c'est bien le PixelWand *color qu'il faut utiliser.

    Ici tu trouveras l'impl�mentation de MagickGetImagePixelColor (ligne 4989) :
    http://www.imagemagick.org/api/Magic...ce.html#l05005

    Tu peux voir que ce que tu affiche dans le printf c'est une valeur de bool�en signifiant si tout c'est bien pass� : MagickTrue par exemple.

    Cordialement,
    A.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par d�faut
    Donc si j'ai bien compris, �crit de fa�on correcte �a donnerait �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    MagickGetImagePixelColor(magick_wand,f->x,f->y,color);
     
    printf("la couleur est %d",color);
    ( dsl si ces questions paraissent enfantine ^^)

  4. #4
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Par d�faut
    Bonjour,








    • En terme de code, cela pourrait donner :
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      #include <string>
      #include <iostream>
       
      ...
       
      PixelWand color;
      MagickGetImagePixelColor( magick_wand, f->x, f->y, &color);
      char* colorName = PixelGetColorAsString(&color)
      std::string sColorName(colorName);
      std::cout << sColorName; // Le nom de la couleur du pixel

    Cordialement,
    A.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par d�faut
    Pour la d�finition de color j'avais trouver ce genre d'exemple :
    donc au niveau de l'�toile faut-il la mettre ou pas ?

    quand � la technique avec le "char", je vois ; mais il me faudrait plus un "int", car je vais avoir � faire des tests sur cette valeur par la suite.

    Comme je l'avais mis dans le premier poste une valeur binaire 0 ou 1, l'image que je vais tester sera en noir et blanc.

    Et encore merci de m'aider

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Par d�faut
    Bonjour,

    donc au niveau de l'�toile faut-il la mettre ou pas ?
    Il faut que ta structure soit d�clar�e � un moment donn�e. Avec ce que tu proposes, tu n'a qu'un pointeur de structure qui ne pointe sur rien de particulier. Voir mon message pr�c�dent avec l'exemple de code.

    quand � la technique avec le "char", je vois ; mais il me faudrait plus un "int", car je vais avoir � faire des tests sur cette valeur par la suite.
    A cette url cit�e dans mon message pr�c�dent, tu trouveras une liste des fonctions qui pourraient s'av�rer int�ressantes (notamment une fonction capable de te retourn�e le code HSL) : http://www.imagemagick.org/api/pixel-wand.php

    Bon courage,
    Cordialement,
    A.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2003] Probl�me pour r�cuperer la valeur de cellules
    Par the-geut dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 22/04/2010, 10h01
  2. Probl�me pour r�cuperer donn�e dans un txt
    Par Maldus dans le forum Delphi
    R�ponses: 4
    Dernier message: 15/10/2006, 21h19
  3. Probl�me pour classer les valeurs d'un champ
    Par AjJi dans le forum Access
    R�ponses: 11
    Dernier message: 06/04/2006, 09h19
  4. R�ponses: 1
    Dernier message: 03/12/2005, 12h24
  5. R�ponses: 1
    Dernier message: 26/08/2005, 17h49

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