Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2671 connectés 

 


Dernière réponse
Sujet : Comment calculer la couleur moyenne d'une image bmp sous Delphi?
Dinofly Merci, c'est sympa :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Dinofly Merci, c'est sympa :)
JWhy 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)
Dinofly Merci beaucoup, je crois que je vais y arriver  :bounce:
darkoli 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);

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

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)