Comment calculer la couleur moyenne d'une image bmp sous Delphi?

Comment calculer la couleur moyenne d'une image bmp sous Delphi? - Programmation

Marsh Posté le 07-05-2001 à 11:59:37    

Tout est dans le titre, je débute au fait. Y a-t-il une fonction spéciale ou faut faire un algo?


---------------
www.planetemu.net
Reply

Marsh Posté le 07-05-2001 à 11:59:37   

Reply

Marsh Posté le 07-05-2001 à 13:49:46    

ben le plus c'est d'utiliser un composant TPaintBox.
 
 1° Tu ouvres l'image au format bmp avec la méthode du composant (dont je ne me souviens plus du nom) ca doit etre Load File ou un truc dans le genre
 
 2° apres tu recupere la hauteur et la largeur de l'image
 
 3° tu utilise la propriete Pixels du TPaintBox pour obtenir la couleur de chaque pixels.
 
Attention, il faut separer les composantes R,V,B des couleurs pour en faire la moyenne.
 

Code :
  1. var nombre_de_pixels:int64;
  2.     r,v,b:int64;
  3.     c:integer;
  4. ...
  5. r:=0;
  6. v:=0;
  7. b:=0;
  8. nombre_de_pixels=largeur*hauteur;
  9. for i:=0 (ou 1) to largeur(-1)
  10.   begin
  11.     for j:=0 (ou 1) to hauteur(-1)
  12.       begin
  13.         c=nom_composant.Canvas.Pixels[i,j];
  14.         r=r+Composante_rouge(c);
  15.         v=v+Composante_verte(c);
  16.         b=b+Composante_bleue(c);
  17.       end;
  18.   end;
  19. r=r/nombre_de_pixels;
  20. v=v/nombre_de_pixels;
  21. b=b/nombre_de_pixels;


 
Attention, ca fait quelque temps que je n'ai pas utilisé delphi alors il a surement des erreurs et il existe surement aussi un autre composant mieux adapté pour ce genre de chose (TImage peut etre).
 
Pour separer les composantes c'est tres facile :
 r=((c shr 16) and 255);
 v=((c shr  8) and 255);
 b=((c       ) and 255);
pour le vert c'est sur mais pour le rouge te le bleu il faut peut etre les inverser :
 r=((c       ) and 255);
 v=((c shr  8) and 255);
 b=((c shr 16) and 255);

Reply

Marsh Posté le 07-05-2001 à 14:40:05    

Merci beaucoup, je crois que je vais y arriver  :bounce:


---------------
www.planetemu.net
Reply

Marsh Posté le 07-05-2001 à 17:43:06    

pour tous les trucs de manipulations d'images ou de couleurs (algo + exemple en delphi), tu peux jeter un oeil ici: http://www.efg2.com/Lab/
 
je n'y ai pas vu qqchose qui ressemble a ce que tu voulais faire, tu peux toujours jeter un oeil a cet article ( http://www.efg2.com/Lab/ImageProcessing/Scanline.htm ) qui t'explique comment acceder aux pixels d'une image d'une maniere plus rapide que la propriete .pixels (si tu desires traiter des images de taille plus importante)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 07-05-2001 à 19:47:28    

Merci, c'est sympa :)


---------------
www.planetemu.net
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed