是否有办法在 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 个图像执行此过程,它总是会给出错误的结果。
还有什么办法吗?例如更改颜色或对比度等。
最佳答案
这里有关于您拥有的选项的好文章:https://stackoverflow.com/a/844113/7735这需要一些背景知识,并且性能最佳的解决方案很难从头开始实现,因此使用某种库是最简单的。这是 Delphi 的 OpenCV 包装器:https://github.com/Laex/Delphi-OpenCV
关于image - Delphi 比较 2 个相似图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454498/