![]() |
Schwarzanteil eines TImage ermitteln
Hallo
Ich habe mal wieder ein Problem. Ich arbeite gerade an einem Programm was zwei Bilder in einem TImage vergleicht. Das Programm, dass ich aus diesem Forum habe, stellt die Differenz zeier Bilder dar in dem es alles was gleich ist, in schwarz Makiert. Also wenn man zwei gleiche Bilder einläd, dann stellt es ein schwarzes Bild als Differnenz dar. Jetzt meine Frage: Gibt es eine Möglichkeit den Schwarzanteil eines TImage zu ermitteln um die Unterschiede zu auszulesen? Gruß, Landfloh |
Re: Schwarzanteil eines TImage ermitteln
.. da fällt mir nichts anderes ein als die schwarzen Pixel zu zählen
und in ein Verhältnis zur gesammten Pixelanzahl zu setzen. Grüße Klaus |
Re: Schwarzanteil eines TImage ermitteln
Wie zählt man denn die schwarzen Pixel von einem TImage?
|
Re: Schwarzanteil eines TImage ermitteln
Hallo,
das könnte im Ansatz so ausschauen:
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var i,j : Integer; blackCount: Integer; begin blackCount := 0; for i:= 0 to image1.Picture.Bitmap.Height -1 do for j:=0 to image1.Picture.Bitmap.Width -1 do if image1.Picture.Bitmap.Canvas.Pixels[j,i] = clBlack then inc(blackCount); end; Klaus |
Re: Schwarzanteil eines TImage ermitteln
Wenn ich das jetzt richtig verstanden habe speichert das Programm die schwarzen Pixel im Verhältniss zu allen Pixeln in der Variable blackCout.
Aber immer wenn ich versuche die Variable in ein Label zu laden bekomme ich den Wert 0heraus und das Bild verschwindet. |
Re: Schwarzanteil eines TImage ermitteln
.. die Variable heißt bei mit blackCount und nicht blackCout.
Grüße Klaus |
Re: Schwarzanteil eines TImage ermitteln
Zitat:
Welche Fehlermeldung bekommst du denn, wenn du was machst? |
Re: Schwarzanteil eines TImage ermitteln
Sorry dass ich den Beitrag oben so spät verändert habe.
Also ich bekomme keine Fehlermeldung aber der Wert bleibt auf Null und das Bild verschwindet. |
Re: Schwarzanteil eines TImage ermitteln
Wie soll denn das Bild verschwinden?
Ist es jetzt ganz weiß, schwarz oder was passiert? Dass der Wert 0 bleibt, kann daran liegen, dass du vllt Pixel hast, die nicht exakt schwarz sind. |
Re: Schwarzanteil eines TImage ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
... also bei mir tut es..
siehe Bild im Anhang. Grüße Klaus |
Re: Schwarzanteil eines TImage ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir bleibt der Wert auf Null.
Quellcode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,j : Integer; blackCount: Integer; begin blackCount := 0; for i:= 0 to image1.Picture.Bitmap.Height -1 do for j:=0 to image1.Picture.Bitmap.Width -1 do if image1.Picture.Bitmap.Canvas.Pixels[j,i] = clBlack then inc(blackCount); Label1.Caption := ''; Label1.Caption := (IntToStr(blackCount)); end; |
Re: Schwarzanteil eines TImage ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
.. kannst Du das Bild mal anhängen
Grüße Klaus |
Re: Schwarzanteil eines TImage ermitteln
Zitat:
:wiejetzt: |
Re: Schwarzanteil eines TImage ermitteln
Achso.
Das Programm ließt nur den Schwarzanteil von Bitmaps. Danke für eure Hilfe. Es leuft jetzt. :mrgreen: |
Re: Schwarzanteil eines TImage ermitteln
.. noch als Nachschlag:
Wenn ich das jpg lade verschwindet das Bild auch bei mir. Ich habe den Code dann so angepasst, dann klappe es auch mit jpg.
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var i,j : Integer; blackCount: Integer; jpg : TJpegImage; begin blackCount := 0; jpg := TJpegImage.Create; jpg.LoadFromFile('d:\unbenannt.jpg'); image1.Picture.Bitmap.Assign(jpg); jpg.Free; for i:= 0 to image1.Picture.Bitmap.Height -1 do for j:=0 to image1.Picture.Bitmap.Width -1 do if image1.Picture.Bitmap.Canvas.Pixels[j,i] = clBlack then inc(blackCount); edit1.Text:=FloatToStr(blackCount/((i+1)*(j+1))); end; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz