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++Builder Discussion :

conversion bmp en niveau de gris


Sujet :

C++Builder

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Points : 7
    Points
    7
    Par défaut [RESOLU]conversion bmp en niveau de gris
    salut, j'ai un projet a réaliser comme tous les ans et la j'ai un pb avec ce minuscule algo ...
    je converti une image bmp qui ce trouve dans une Timage en niveau de gris :

    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
    void TForm1::Imageniveauxdegris1(TImage *Image)
    {
     int i,j,r,g,b;
     float y;
     Image->AutoSize = true;
     TImage *Image2 = new TImage(0);
     Image2->Height = Image->Height;
     Image2->Width = Image->Width;
     
       for (j=1;j<Image->Height ;j++ )
       {  	for (i=1;i<Image->Width ;i++ )
            {       g = GetGValue(Image->Canvas->Pixels[i][j]);
                    b = GetBValue(Image->Canvas->Pixels[i][j]);
                    r = GetRValue(Image->Canvas->Pixels[i][j]);
                    y = 0.299*g + 0.587*r + 0.114*b;
                    Image2->Canvas->Pixels[i][j] = y;
             }
        }
         Image2->Picture->SaveToFile(ListeFichiers->Strings[compt] + "Binar2.bmp");
     }
    ca n'a pas l'air mal du tout mais mon image est rouge ...
    meme avec un code de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = 0.299*g + 0.587*b + 0.114*r;
    mon pb ce trouve peu etre au niveau de l'affectation du niveau de gris ... il faut pi etre mettre cette valeure sur les 3 composante RGB ?
    merci !!!

  2. #2
    ubu
    ubu est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 38
    Points : 47
    Points
    47
    Par défaut Re: conversion bmp en niveau de gris
    Citation Envoyé par hholivier
    mon pb ce trouve peu etre au niveau de l'affectation du niveau de gris ... il faut pi etre mettre cette valeure sur les 3 composante RGB ?
    merci !!!
    Bingo, il faut effectivement affecter la valeur obtenue (luminance) au trois composantes RGB. (au passage, penses à typer le float y en unsigned char)...

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    oki merci c'est bien ce que je pensais ...
    mais la question c'est comment faire ??
    il n'y a pas de fonction genre SetRvalue ... comme pour les GetRvalue ???
    comment j'applique ca a mon pixel ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Image2->Canvas->Pixels[i][j] = y
    cela fait koi en fait je remplace le bleu par le gris ???

    je vais essayer pour le unsigned char
    merci @plus

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    pour mettre le gris sur les composantes RGB, tu peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image2->Canvas->Pixels[i][j] = (TColor)( (DWORD)y |  ( (DWORD)y << 8) | ( (DWORD)y << 16) );

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Yes man ca tourne nickel ! merci !!!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    pense au tag [Résolu] dans le sujet de ton premier message

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Points : 7
    Points
    7
    Par défaut voila
    voila c fait merci pour tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion couleur en niveau de gris
    Par kierbano dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 05/04/2010, 17h21
  2. Réponses: 1
    Dernier message: 26/04/2009, 09h31
  3. Réponses: 1
    Dernier message: 30/11/2005, 17h12
  4. conversion de couleur en niveau de gris
    Par giminik dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 27/07/2005, 13h29
  5. Réponses: 8
    Dernier message: 17/04/2005, 19h58

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