我正在尝试使用来自 ImageMagick 的 C# 库 Magick.NET 比较来自网页的两个屏幕截图。我的代码如下所示:
//Adapt image a bit otherwise he'll throw an error over the whole image
newScreenshot.ColorFuzz = new Percentage(15);
//Get the difference, 1 = perfectly the same, less then 1 not.
double diff = newScreenshot.Compare(benchmarkScreenshot, new ErrorMetric(), imgDiff);
//Output the result image for comparaison
imgDiff.Write(compareResultPath);
if (diff < 0.998)
{
//Do something
}
在这种情况下,我会得到低于 1 的值,我认为 1 将是“相同的”,而小于 1 的所有值都不会。我错了......所以我能想到的检查它们是否尽可能相同的唯一方法是通过降低 if 语句中的值来降低容差。
因此,如果我有来自网站的屏幕截图,并且我对其进行了调整,我会得到“diff”变量的以下值:
同图:0.99842343024053205
删除一句话:0.99776453647987487
从页面上的任何单词中删除一个字母:0.99698398328761506
我非常害怕删除整个句子的价值高于单个字母。
我还尝试使用 ErrorMetric.Absolute 而不是 new ErrorMetric(),我为“diff”变量获得的值是:
相同的图像:1949
删除一句话:766
从页面上的任何单词中删除一个字母:75
有没有更好,更准确的方法,然后我正在尝试检查是否有实际变化?