Hallo Alle zusammen
Ich hoffe, dass Ihr mir weiterhelfen könnt und bedanke mich im Voraus für jede Bemühung oder Tipp oder Code

..
naja ,
Mein problem : ich habe BildNr.1 ( Monochrom --> Schwarz und Weiss, d.h. nur 2 PixelWerte( 0 und 16777215)) in eine 8*8 Matrix aufgeteilt. Sooo nun möchte ich die Summe aller Pixelwerte in EINEM Quadrat des BildesNr.1 lesen ( z.B. Quadrat 1 1 , Quadrat 1 2 .... Quadrat 8 8 . Insgesamt sind es 64 Einzelquadrate].
Nachdem ich die Summe bekomme, will ich verglichen ob diese überprüfen ob sie eine bestimmte Schwelle überschreitet ...
Wenn Ja, dann soll das ganze Quadrat Schwarz bzw. Weiss werden...
Also ich habe das problem eigentlich schon gelöst aber gaaanz unelegant... Indem ich für jeden Quadrat einen Code gegeben habe : bsp :
// Zu Matrix 1
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| for x1 := 0 to Form4.Image1.Width div 8 do begin for y1:= 0 to Form4.Image1.Height div 8 do begin
zw1:=zw1+Form4.Image1.Canvas.Pixels[x1,y1];
SR1:=zw1 ; end; end; if SR1< 16777215*0.5*(form4.Image1.Width div 8 )*(form4.Image1.height div 8 ) then begin for x := 0 to form4.Image2.Width div 8 do for y := 0 to form4.Image2.height div 8 do Form4.Image2.Canvas.Pixels[x,y]:= 0; end else begin for x := 0 to form4.Image2.Width div 8 do for y := 0 to form4.Image2.height div 8 do Form4.Image2.Canvas.Pixels[x,y]:= 16777215; end ; |
Insgesamt habe ich 64 Codes dieser Art XD ... ( bei einer 16x16 matrix werden es 265 !!!! und darauf hab ich 0 Bock !!)
Deshalb will ich das ganze Procedere irgendwie in einer Schleife noch einpacken, sodass ich wenigsten "etwas" Tipparbeit einspare ...
Ich habs mit folgendem Code probiert ... hat aber leider nicht funktioniert ...

:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| for s := 1 to 4 do
begin
for x1 := s-1 * Form4.Image1.Width div 4 to s* Form4.Image1.Width div 4 do begin for y1 := 0 to Form4.Image1.Width div 4 do Zw1:= zw1 + Form4.Image1.Canvas.Pixels[x1,y1]; SR1 := Zw1 ; end;
if SR1 < 16777215*0.5*(form4.Image1.Width div 4 )*(form4.Image1.height div 4 ) then begin for x := s-1 * Form4.Image1.width div 4 to s *form4.Image2.Width div 4 do for y := 0 to form4.Image2.height div 4 do Form4.Image2.Canvas.Pixels[x,y]:= 0; end else begin for x := s-1 * Form4.Image1.width div 4 to s *form4.Image2.Width div 4 do for y := 0 to form4.Image2.height div 4 do Form4.Image2.Canvas.Pixels[x,y]:= 16777215; end ;
zw1:=0; SR1:=0;
end; |
Kann mir Jemand sagen wo der fehler liegt oder einen besseren Vorschlag machen ?? ( bevor ich selber noch zu einer Matrix werde XD )
beste Grüße
Moderiert von
Gausi: Delphi-Tags hinzugefügt