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 :

Transformer une matrice à une image


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Transformer une matrice à une image
    Salut,
    j ai un fichier texte qui contient seulemnt des chiffres.je veux transformer ce fichier en une image qu on peut ouvrire avec bitmap ou n'importe autre editeurs d'image.mais je connais pas comment il faut le faire.
    j'aimerais bien savboir comment il le faut faire et merci pour votre réponse.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il te faut enregistrer à la main dans un format standard ou tu passes par des bibliothèques dédiées.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut transfomer les chiffres en pixels??
    j'ai trouvé un programme qui elle utilise une matrice de pixels au format RGB et la fficher sous bitmap mùais j ai pas aucune idée comment je peut transformer ma matrice de chiffres à une matrice de pixels!!
    je ne sais pas si vous avez aucune idée comment onpeut le faire?

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Une boucle for pour convertir la valeur en "chiffres" en la valeur acceptée par ta bibliothèque graphique.

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Si tu veux le convertir à la main, tu peux le convertir au format PPM.
    C'est assez simple !

    http://deptinfo.cnam.fr/Enseignement...tement-ppm.pdf
    Mais bon, c'est pas du BMP, ça dépend de ce que tu veux en faire.
    Je ne répondrai à aucune question technique en privé

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par millie
    Si tu veux le convertir à la main, tu peux le convertir au format PPM.
    C'est assez simple !

    http://deptinfo.cnam.fr/Enseignement...tement-ppm.pdf
    Mais bon, c'est pas du BMP, ça dépend de ce que tu veux en faire.
    ce qui m'interesse est seulement de visualiser la matrice dans une image de n importe quel format.

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'avais réaliser un projet de traîtement d'image (justement sur le type PPM), mais malheureusement, le serveur ssh sur lequel j'ai les sources est fermé pdt un mois. Donc, je ne pourrai pas de proposer mes sources.
    Je ne répondrai à aucune question technique en privé

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    j ai fait un programme de calcul matriciel qui me génere une matrice (1000*500) de valeur double que je veux visualiser.

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Iimaginons que tu disposes d'une structure de couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct Couleur_
     { int rouge;
       int vert;
       int bleu;
     }
     Couleur;
    Alors en PPM, tu peux avoir une fonction qui prend un tableau à deux dimension de 1500 * 500 composé de cette structure.

    Tu peux faire : (je n'ai pas testé le code)

    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
     
    Couleur matrice[1500][500];
    int i;
    int j;
     
    FILE* f = fopen(ton fichier .PPM en écriture);
     
    if(f==NULL)
     {
     // cas d'erreur
     }
     
    /*écriture de l'entête du fichier*/
    /*
     * P3 c'est pour la couleur, P2 pour le noir et blanc
     * 1500 longuueur
     * 500 largeur
     * 255  c'est le niveau maximal de couleur
     */
    fprintf(f,"P3 \n 1500 500 \n 255");
     
     
     
    /*écriture des couleurs*/
    for(i=0;i<1500;i++)
     for (j=0; j<500;j++)
      fprintf(f, " %d %d %d    ", matrice[i][j]->rouge, matrice[i][j]->vert, matrice[i][j]->bleu);
     
    fclose(f);

    Suffit de lire l'image avec un logiciel pouvant lire les PPM (comme GIMP)
    Je ne répondrai à aucune question technique en privé

  11. #11
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Ah zut, j'avais pas vu que c'était le forum en C++.

    Enfin, fprintf fonctionne quand même...
    Je ne répondrai à aucune question technique en privé

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    estce qu il ya de conditon sur les valeurs de la matrice (valeurs négativ ou valeurs tres grand?) je veux essayer ce programme ce soir et le te tien au courant.

    merci

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    est ce que fopen est la meme choseque ifstream(filrname ,std::out)??
    est ce t peu le faire n C++ cr je suis debutant et j ai jamais travaillé dans le fichier en C.(je sais j chui chiant)

    merci

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    oui, c'est ça, tu écris juste les différents entiers dans le fichier avec l'en-tête indiqué.

  15. #15
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    P3
    #nom de ton image.ppm
    4 4
    255
    0 0 0 0 0 0 0 0 0 15 0 0
    0 0 0 0 15 7 0 0 0 0 0 0
    0 0 0 0 0 0 0 15 7 0 0 0
    15 15 0 0 0 0 0 0 0 0 0 0 0
    Comme l'a dit millie, le plus simple est le format ppm (il y a aussi le raw format)

    4 4
    x et y de ton image
    255, est la valeur maximum de chaque composantes qui se divise en 3
    (rgb) qui doivent être égale et/ou compris entre 0 et 255

    donc il faut écrire des couples de r g b
    0 0 0 -> r g b
    15 0 0 -> r g b

    etc

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Miles
    oui, c'est ça, tu écris juste les différents entiers dans le fichier avec l'en-tête indiqué.
    donc il faut que la plus grande valeur de mon matrice soit 255??
    et si ca e cas il faut donc chanfer la plus petite valeur à 0 et la plus grande valeur à 255.

  17. #17
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Il ne faut pas rééchelonner tes données de 0 à 255, mais s'assurer que l'échelle utilisé est bien 0 pour la plus petite valeur théorique de ta "matrice" et 255 la valeur théorique la plus grand de ta "matrice". Sachant que les valeurs 0 et 255 peuvent être absente de ta "matrice" et pour autant, avoir une "matrice" tout à fait correcte.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Ti-R
    Il ne faut pas rééchelonner tes données de 0 à 255, mais s'assurer que l'échelle utilisé est bien 0 pour la plus petite valeur théorique de ta "matrice" et 255 la valeur théorique la plus grand de ta "matrice". Sachant que les valeurs 0 et 255 peuvent être absente de ta "matrice" et pour autant, avoir une "matrice" tout à fait correcte.
    j ai pas compris comment on peut le faire ca car dans ma matrice j ai des valeurs entre -10000 à +10000, donc j ai crée une autre matrice danslaquelle je reéchelonne les valeurs de 255 pour la plus grande valeur qui est le 10000; mais apres je me suis planté car je ne peut pas reéchelonne tous les nombres negatives à 0 ou a un nombre négatif car il faut etre entre 0 et 255.(je sais je suis chiant)

    Merci

  19. #19
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    j ai des valeurs entre -10000 à +10000


    C'est une image d'un scanner ?

    Disons "pixel" qui est entre -10000 et +10000.

    (pixel + 10000)/20000 -> échelle 1
    ((pixel + 10000)*255)/20000 -> échelle 255

    pour un précalcul

    pseudo code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    float a = 255/20000;
    pixel = (pixel + 10000)*a; // -> échelle 255
    PS: tu es sur que c'est du RGB ?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Ti-R


    C'est une image d'un scanner ?

    Disons "pixel" qui est entre -10000 et +10000.

    (pixel + 10000)/20000 -> échelle 1
    ((pixel + 10000)*255)/20000 -> échelle 255

    pour un précalcul

    pseudo code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    float a = 255/20000;
    pixel = (pixel + 10000)*a; // -> échelle 255

    PS: tu es sur que c'est du RGB ?
    si j ai le la 1000 comment je peu le mettre sous RVB car pour chque valeur de mam matrice il faut trois couleur??
    donc est ce que je doit transformer 1000 en pixel (echelle 255) et le mettre trois fois successives pour les trois couleurs RVB en format ppm?

    0 0 0 -> r g b

    donc pour 1000 ca sera:

    (1000+10000)*a

    144.25 144.25 144.25 -> r g b


    c'estun exemple de valeurs que j ai:
    764.454 768.429 754.782 775.108
    772.542 736.752 662.185 667.632
    -280.154 -248.948 -227.144 -215.923
    -438.327 -385.182 -352.626 -349.389

Discussions similaires

  1. parcours aléatoire d'une matrice d'images
    Par charlesz dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/05/2010, 11h10
  2. Passer d'une matrice à une image BMP
    Par tigzy dans le forum Images
    Réponses: 17
    Dernier message: 14/04/2010, 18h13
  3. Réponses: 7
    Dernier message: 08/02/2010, 22h02
  4. Réponses: 7
    Dernier message: 29/03/2009, 06h07
  5. Squelétisation d'une matrice d'image
    Par kawther dans le forum Images
    Réponses: 1
    Dernier message: 30/12/2008, 11h20

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