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 habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    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 habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    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