Эта процедура позволяет сравнивать два изображения по пикселям. Предположительно, что Image1 и Image2 имеют одинаковые размеры. Результат выводится в процентах в компоненте Label, помещенного на форму.
procedure CompareImages(Image1, Image2: TImage);
var x, y: integer;
differences: LongInt;
line1, line2: PByteArray;
procent: single;
const porog=5;
// Когда значение превысит порог,
// будет выведена ошибка.
begin
differences:=0;
for y:=0 to Image1.Picture.Bitmap.Height - 1 do begin
line1:=Image1.Picture.Bitmap.ScanLine[y];
line2:=Image2.Picture.Bitmap.ScanLine[y];
for x:=0 to Image1.Picture.Bitmap.Width - 1 do
if abs(line1[x] - line2[x]) > porog then
inc(differences);
if Image1.Picture.Bitmap.Height*Image1.Picture.Bitmap.Width>0 then
procent:=100*(differences/(Image1.Picture.Bitmap.Height*
Image1.Picture.Bitmap.Width))
else
procent:=0;
Label1.Caption:='Отличия:'+FloatToStr(procent)+'%';
end;
end;
Комментарии