Mise en noir et blanc d'une timage

Soyez le premier à donner votre avis sur cette source.

Vue 4 620 fois - Téléchargée 258 fois

Description

C'est un code assez simple mais reservé aux ordi a processeur 633MHz et + car la conversion d'une image tres petite est assez longue.

Copier ce source dans une procédure ButtonClick et ajouter deux TImages :
- le premier, nomé image1, contient l'image de départ.
- le second, nommé image2, contient l'image d'arrivée.

Source / Exemple :


var                                         //def des variables

x,y:integer;
pix,r,v,b:variant;

begin
for x:=1 to image1.picture.width do          //on prend une ligne
begin
for y:=1 to image1.picture.height do         //les colonnes de cette ligne
    begin
    pix:=image1.canvas.Pixels[x,y];              //on prend les couleurs RVB
    r:=int(pix mod 256);                         //rouge
    V := Int((pix - r) / 256 Mod 256);           //vert
    B := Int((pix - r) / 256 / 256);             //bleu
    R := (r + V + B) / 3;                        //ajout des trois couleurs puis division par trois pour obtenir un niveau de gris
    image2.Canvas.pixels[x,y]:=rgb(r,r,r);       //ecriture du pixel en N&B a la même place sur l'autre Timage
    end;
end;                                             //end du bloc qui dboute avant for y:=1 to ...

Conclusion :


Vous pouvez aussi ne pas changer de TImage, c'est a dire avoir directement l'image décoloréé dans le TImage d'origine en modifiant les "image2." en "image1."

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

arckhenstone
Messages postés
19
Date d'inscription
lundi 30 mars 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
oki je te remercie :)
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
oui le forum ;)

poste tes questions sur le forum parce qu'ici tu auras très peut de chances d'avoir une réponse !!!!
arckhenstone
Messages postés
19
Date d'inscription
lundi 30 mars 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
Voila j'ai réussi à mettre mon image en noir et blanc sans aucun soucil.
Meric pour votre aide.

procedure TForm1.BiChromieClick(Sender: TObject);
Const
seuil=128;
filtrage=$ffffff; //blanc
Var
x,y,A,B:word;
begin
x:=A+1;
x:=B-1;
for x:=0 to image1.picture.width-1 do
begin

for y:=0 to image1.picture.Height-1 do
begin
if image1.Picture.Bitmap.Canvas.Pixels [x,y]and $ff>seuil then
image1.Picture.Bitmap.Canvas.Pixels [x,y]:=$ffffff else image1.Picture.Bitmap.Canvas.Pixels [x,y]:=$000000;

end;
end;

end;


Lol maintenant il faudrait que grâce à mon image noir et blanc je trouve le centre de gravité de l'image en utilisant le calcul des moments géométriques. Et aussi, complétement à part, que je mette dans un afficheur la luminosité moyenne de l'image
Lol dure la première semaine à faire du DELPHI :s

Une idée ? lol
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
c'est pas un problème cliques sur UTramage.pas et tu pourras visualiser le code et faire un copier coller au pire
arckhenstone
Messages postés
19
Date d'inscription
lundi 30 mars 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
j'y ai déjà été, mais malheureusement, avec l'ordi qu'il m'ont filé sur mon lieu de stage je ne peux rien dlw... donc je ne peux pas accéder au ligne du code...
Merci quand même Cirec.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.