Stwórzmy funkcję, która będzie porównywać dwa obrazki w formacie BMP, a następnie zwróci w ilu procentach są ze sobą identyczne. Oto jej kod:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
function Porownaj(Image1, Image2: TImage) : integer; var x, y: integer; liczba: LongInt; punkt1, punkt2: PByteArray; procent: double; const max_roznica=5; begin liczba:=0; for y:=0 to image1.Picture.Bitmap.height-1 do begin punkt1:=image1.Picture.Bitmap.scanline[y]; punkt2:=image2.Picture.Bitmap.scanline[y]; for x:=0 to image1.Picture.Bitmap.width-1 do if abs(punkt1[x]-punkt2[x])>max_roznica then inc(liczba); if image1.Picture.Bitmap.height*image1.Picture.Bitmap.width>0 then procent:=100*(liczba/(image1.Picture.Bitmap.height* image1.Picture.Bitmap.width)) else procent:=0; Result := 100-round(procent); end; end; |
Wywołanie funkcji:
1 |
Label1.Caption:= 'Podobieństwo w '+ IntToStr(Porownaj(Image1,Image2))+' procentach'; |
Image1 i Image2 to obiekty klasy TImage zawierające obrazy w formacie BMP. Miłego testowania 😉
Autor: Nakiel