2

无论如何在Delphi中比较2个相似的图像(不一样)。

这里有些例子:

在此处输入图像描述&在此处输入图像描述

很明显,我们不能逐像素比较,所以我的想法是对每个图像的像素值求和,然后比较它们:

function CalcPix( img : TImage) : longint;
var
  s : longint;
  i, j : integer;
begin
  s := 0;

  for i := 0 to img.Height do
  begin
     for j := 0 to img.Width do
     begin
      if img.Canvas.Pixels[i,j] <> clWhite then
        s := s + img.Canvas.Pixels[i, j];
     end;
  end;

  Result := S;
end;

结果是:

1)14836072057

2)16750850318

如您所见,它们并没有那么接近,如果我一次使用 4-5 张图像执行此过程,它总是会给我错误的结果。

还有其他方法吗?比如改变颜色或对比度等。

4

1 回答 1

5

这是关于您拥有的选项的好文章:https ://stackoverflow.com/a/844113/7735这需要一些背景知识,而且性能最佳的解决方案很难从头开始实施,因此使用某种库是最简单的. 这是 Delphi 的 OpenCV 包装器:https ://github.com/Laex/Delphi-OpenCV

于 2013-08-27T06:36:46.860 回答