[ reiser @ 18.09.2009. 06:06 ] @
Dakle, treba mi funkcija koja proverava da li se neka manja slika sadrzi u nekoj vecoj slici i ako se nalazi, vraca koordinate manje slike (slike se ucitavaju tokom runtimea). Napisao sam ovako nesto: Code: TImageCompareInfo = record Found : Boolean; Left, Top, Width, Height : Integer; end; function CompareImage(ABigImage, ASmallImage : TBitmap; var imagecomp : TImageCompareInfo) : Boolean; var C1, C2, C3, C4 : Integer; different : Boolean; begin result := FALSE; ABigImage.PixelFormat := pf24bit; For C1 := 0 to ABigImage.Height - ASmallImage.Height - 1 Do Begin For C2 := 0 to ABigImage.Width - ASmallImage.Width - 1 Do If ABigImage.Canvas.Pixels[C2, C1] = ASmallImage.Canvas.Pixels[0, 0] Then Begin different := FALSE; For C3 := C2 + 1 to C2 + ASmallImage.Width - 1 Do Begin For C4 := C1 + 1 to C1 + ASmallImage.Height - 1 Do Begin If ABigImage.Canvas.Pixels[C3, C4] - ASmallImage.Canvas.Pixels[C3 - C2, C4 - C1] > $01 Then Begin different := TRUE; Break; End; End; If different Then Break; End; If not different Then Begin imagecomp.Found := TRUE; imagecomp.Left := C2; imagecomp.Top := C1; imagecomp.Width := ASmallImage.Width; imagecomp.Height := ASmallImage.Height; result := TRUE; Exit; End; End; End; end; Medjutim, da li postoji neka optimizovanija funkcija koja radi ovo ? Jer ovoj mojoj treba otprilike 4-5 sekundi da procesuira sliku od 1440x900. Hvala unapred. |