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

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 8
    Points
    8
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    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.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 8
    Points
    8
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    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.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Pour la définition de color j'avais trouver ce genre d'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PixelWand
    *color;
    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 habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    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.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette dernière information, elle va m'être plus qu'utile je m'attèle à la tache et encore merci pour ton aide

+ 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. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    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