![]() |
Re: Toleranzen von Farben
Deine Funktion sieht natürlich schöner aus, weil man die Farbe wechseln kann @DeddyH. Hab hier auch mal eine Funktion geschrieben gehabt, war schon fast fertig, als ich deine Post gesehen hab.
Hier mal meine Funktion:
Delphi-Quellcode:
Funktioniert auch eignentlich gut. Nur PErformance ist aufgrund des Memos nicht so toll.
procedure TForm1.Bildanalyse;
var i, j, AnzahlSchwPixel, PosOben, PosUnten, PosRechts, PosLinks, Anz, RefRValue, RefGValue, RefBValue, PCRValue, PCGValue, PCBValue: integer; begin AnzahlSchwPixel := 0; //Anzahl der gefundenen schwarzen Pixel Anz := 0; // Anzahl der Schleifendurchgänge (reiner Kontrollwert für mich) // die Positionen für Unten und Rechts werden negativ gesetzt, da beim finden einer // dieser Grenzen immer ein positiver Wert eingetragen wird PosUnten := -1; PosRechts := -1; // die Psoitionen für Oben und Links werden übernatürlich groß gewählt, da somit eine // einfachere Prüfung durchgeführt werden kann. PosOben := 999; PosLinks := 999; Memo1.Clear; for i := 1 to FprivBMP.Width do begin for j := 1 to FprivBMP.Height do begin Anz := Anz + 1; // Kontrollwert erhöhen PCRValue := GetRValue(FprivBMP.Canvas.Pixels[i,j]); PCGValue := GetGValue(FprivBMP.Canvas.Pixels[i,j]); PCBValue := GetBValue(FprivBMP.Canvas.Pixels[i,j]); Memo1.Lines.Add('R ' + inttostr(PCRValue) + ',G ' + inttostr(PCGValue) + ', B ' + inttostr(PCBValue)); if (PCRValue < 10) and (PCGValue < 10) and // Hier gehe ich jetzt mal davon aus, dass man den Wert der Farbe clBlack weiß. (PCBValue < 10) then begin AnzahlSchwPixel := AnzahlSchwPixel + 1; if j < PosOben then PosOben := j; if i > PosRechts then PosRechts := i; if j > PosUnten then PosUnten := j; if i < PosLinks then PosLinks :=i; end; end; end; Lbl_Oben.Caption := inttostr(PosOben); Lbl_Unten.Caption := inttostr(PosUnten); Lbl_Rechts.Caption := inttostr(PosRechts); Lbl_Links.Caption := inttostr(PosLinks); Lbl_Anzahl.Caption := inttostr(AnzahlSchwPixel); Lbl_Anz.Caption := inttostr(Anz); end; |
Re: Toleranzen von Farben
Hallo,
"Funktioniert auch eignentlich gut. Nur PErformance ist aufgrund des Memos nicht so toll." speicher Deine Werte doch erst einmal nicht visuell (z.B. StringList, Array ...) und kopiere die erhaltenen Werte nach Abarbeitung der Schleifen in Dein Memo. |
Re: Toleranzen von Farben
Zitat:
|
Re: Toleranzen von Farben
Würde nicht schon ein einfacher Bitmap-Vorher/Bitmap-Nacher Vergleich ausreichen ?
|
Re: Toleranzen von Farben
Mal eine kleine Unwichtigkeit am Rande: Was möchtest du am Ende überhaupt erreichen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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