cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
130
7 janv. 2005 à 09:35
Crois-moi c'est loin d'être compliqué ce genre de manipulation graphique ! ;)
Bon, reprenons dans l'ordre :
Tout d'abord, il faut parcourir tes pixels 1 à 1, par exemple :
for (int i=0; i<LargeurImage; i++)
for (int j=0; j<HauteurImage; j++)
{
PixelCourant = GetPixel(Image.hDC, i, j);
}
Avec cette boucle, tu récupère la couleur de chaque pixel, or toi ce
que tu veux, c'est définir la couleur du pixel selon les couleurs des
autres pixels !
Il te faut donc récupèrer les couleurs des pixels adjacents :
Pixel1 = GetPixel(Image.hDC, i-1, j-1);
Pixel2 = GetPixel(Image.hDC, i-1, j);
Pixel3 = GetPixel(Image.hDC, i-1, j+1);
Pixel4 = GetPixel(Image.hDC, i+1, j-1);
Pixel5 = GetPixel(Image.hDC, i+1, j);
Pixel6 = GetPixel(Image.hDC, i+1, j+1);
Ensuite, il te faut appliquer la matrice :
PixelCourant = Pixel1 - Pixel2 - Pixel3 + Pixel4 + Pixel5 + Pixel6;
Et enfin, tu applique la couleur au pixel courant
SetPixel(Image.hDC, i, j, PixelCourant);
Au final, cela donne :
for (int i=0; i<LargeurImage; i++)
for (int j=0; j<HauteurImage; j++)
{
Pixel1 = GetPixel(Image.hDC, i-1, j-1);
Pixel2 = GetPixel(Image.hDC, i-1, j);
Pixel3 = GetPixel(Image.hDC, i-1, j+1);
Pixel4 = GetPixel(Image.hDC, i+1, j-1);
Pixel5 = GetPixel(Image.hDC, i+1, j);
Pixel6 = GetPixel(Image.hDC, i+1, j+1);
PixelCourant = Pixel1 - Pixel2 - Pixel3 + Pixel4 + Pixel5 + Pixel6;
SetPixel(Image.hDC, i, i, PixelCourant);
}
Bon
par contre, vu que GetPixel te renvoie des couleurs en RGB, et que
SetPixel demande du RGB, il te faut convertir les couleurs de Pixel1 à
Pixel6 en niveau de gris, puis les reconvertir en couleur avant de les
appliquer.
Ceci est pour de la prog sous Windows en utilisant les API Win32 de la
gdi32 ! Mais je pense que tu dois programmer sous Linux, non ? A ce
moment là, il te suffit de remplacer les fonction GetPixel et SetPixel
par les fonctions Linux équivalent (je ne les connait pas).
DarK Sidious
[Administrateur et responsable VB/API du site ProgOtoP]