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

MFC Discussion :

conversion d'une image en niveau de gris en fausse couleur


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Par défaut conversion d'une image en niveau de gris en fausse couleur
    Bonjour,

    J'ai une image en niveau de gris et je souhaite l'afficher en fausse couleur sous VC++. J'utilise la bibliothèque CxImage pour la gestion des images sous VC++.
    Ce que cherche, n'est pas forcément un code source, un algorithme me suffit largement.

    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void CxImage::FalseColorCompositePalette()
    {
    	if (head.biClrUsed==0) return;
     
    	RGBQUAD fcc={0,0,0,0};
    	SetPaletteColor((BYTE)0,fcc);
    	for(DWORD j=1; j<head.biClrUsed; j++){
    		BYTE i=(BYTE)(j*(255/(head.biClrUsed-1))*0.75);
    		RGBQUAD fcc={120,240,i,0};
    		SetPaletteColor((BYTE)j,HSLtoRGB(hsl));
    	}
    }
    avec comme code pour HSLtoRGB (déjà développé sur la bibliothèque de CxImage)

    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
    RGBQUAD CxImage::HSLtoRGB(RGBQUAD lHSLColor)
    { 
    	//<F. Livraghi> fixed implementation for HSL2RGB routine
    	float h,s,l;
    	float m1,m2;
    	BYTE r,g,b;
     
    	h = (float)lHSLColor.rgbRed * 360.0f/255.0f;
    	s = (float)lHSLColor.rgbGreen/255.0f;
    	l = (float)lHSLColor.rgbBlue/255.0f;
     
    	if (l <= 0.5)	m2 = l * (1+s);
    	else			m2 = l + s - l*s;
     
    	m1 = 2 * l - m2;
     
    	if (s == 0) {
    		r=g=b=(BYTE)(l*255.0f);
    	} else {
    		r = (BYTE)(HueToRGB(m1,m2,h+120) * 255.0f);
    		g = (BYTE)(HueToRGB(m1,m2,h) * 255.0f);
    		b = (BYTE)(HueToRGB(m1,m2,h-120) * 255.0f);
    	}
     
    	RGBQUAD rgb = {b,g,r,0};
    	return rgb;
    }

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

Discussions similaires

  1. Conversion d'une image en mode RGB en une image en niveau de gris
    Par frisou65 dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 15/02/2012, 17h20
  2. Conversion d'une image en niveau de gris
    Par bouki' dans le forum Débuter
    Réponses: 2
    Dernier message: 06/10/2010, 19h39
  3. Réponses: 8
    Dernier message: 05/05/2009, 08h36
  4. Réponses: 1
    Dernier message: 08/03/2007, 15h39
  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