Autor Beitrag
maxrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 18.02.12 19:03 
Hallo,

ich schreibe gerade ein Programm, bei dem ich ein Bild auf imagefeld lade und aus dem bild will ich den rotwert auslesen und auf ein label ausgeben

da ich nicht weiß wie man rotfilter arbeitet, kann mir jemand stichpunktartig erklären wie ich vorgehen soll

mein Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
//////////////////////////////////////Bild generieren
procedure TForm1.Button1Click(Sender: TObject);
var i,j,h,w,farbe:integer;
begin
  image1.Picture.LoadFromFile('Futur.bmp');
  h:=image1.Height;
  w:=image1.Width;

/////////////////////////////////////Rotwert auslesen
   for i:=0 to h do
   for j:=0 to w do
   begin
     farbe:=image1.Canvas.Pixels[j,i];
   end;
   label1.Caption:=inttostr(farbe);
end;

mit diesem Programm habe ich glaube alle Pixeln einfach ausgelesen aber nicht den Rotanteil bzw. Rotwert

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 19.02.12 00:11 
Moin!

user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
ein Bild auf imagefeld lade und aus dem bild will ich den rotwert auslesen und auf ein label ausgeben
Was du da tust und sagst, macht einfach keinen Sinn. :nixweiss:

Kannst du erstmal erklären, was "der Rotwert" von einem (ganzen?) Bild sein soll? :gruebel: Und wie man "den Rotwert" in einem Label anzeigen soll?! :lupe:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 19.02.12 09:55 
Dazu muss man sagen dass du in deiner Schleife einfach nur Farbe jeden Pixel einmal zuweist (am Ende ist es also immer die Farbe des letzten Pixels!, warum also der Aufwand mit der Schleife?)

Was du vermutlich meinst ist:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i:=0 to h-1 do
   for j:=0 to w-1 do
   begin
     farbe:=farbe+GetRValue( image1.Canvas.Pixels[j,i] );
   end;
label1.Caption:=inttostr(farbe);


=> jetzt hast du die Summe aller Rotwerte und kannst z.B. den Mittelwert ausrechnen (in dem Fall wäre vielleicht int64 für Farbe nicht ganz falsch um auf Nummer sicher zu gehen).

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)