无论如何比较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个图像进行这个过程,它总会给我错误的结果。
还有其他方法吗?比如改变颜色或对比度等。
答案 0 :(得分:5)
以下是关于您所拥有的选项的好文章:https://stackoverflow.com/a/844113/7735这需要一些背景知识,而且最好的解决方案很难从头开始实施,因此使用某种类型的库将是最简单的。这是Delphi的OpenCV包装器:https://github.com/Laex/Delphi-OpenCV