Форум: "Media";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Внизпопиксельное сравнение изображений Найти похожие ветки
← →
borodaj (2007-05-29 16:10) [0]Доброго времени. господа!! подскажите такой вопрос несложный... есть два изображения, необходимо сравнить их попиксельно, и результат о их "схожести" вывести в процентах.... заранее спасибо!
← →
MBo © (2007-05-29 16:16) [1]Какая именно часть задачи вызывает затруднения?
← →
borodaj (2007-05-29 16:18) [2]да, в принципе обе части... :)
← →
MBo © (2007-05-29 16:24) [3]с процентами проблемы, что ли? ;)
Проходишь в двух вложенных циклах по всем пикселам изображений с помощью ScanLine, например, или с использованием технологии отсюда: http://www.delphimaster.ru/articles/pixels/index.html и при совпадении увеличиваешь счетчик.
← →
borodaj (2007-05-29 16:32) [4]спасиб огромное... а не завалялось у тебя кода пример (по поводу сравнения)... случайно? ))
← →
MBo © (2007-05-29 16:46) [5]
function CompareBmp24(bmp1, bmp2: TBitmap): Double;
var
i, j, Sum: Integer;
SLine1, SLine2: PByteArray;
begin
Assert((bmp1.PixelFormat = pf24bit) and (bmp2.PixelFormat = pf24bit),
"24bit only!");
Assert((bmp1.Width <> 0) and (bmp1.Height <> 0), "Empty bitmap!");
if (bmp1.Height <> bmp2.Height) or (bmp1.Width <> bmp2.Width) then
begin
Result := 0;
Exit;
end;
Sum := 0;
for i := 0 to bmp1.Height - 1 do
begin
SLine1 := bmp1.ScanLine[i];
SLine2 := bmp2.ScanLine[i];
for j := 0 to bmp1.Width - 1 do
if (PInteger(@SLine1[j * 3])^ and $FFFFFF00) =
(PInteger(@SLine2[j * 3])^ and $FFFFFF00) then
inc(Sum);
end;
Result := Sum / (bmp1.Width * bmp1.Height);
end;
← →
borodaj (2007-05-29 16:57) [6]огромное спасибо!!
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c