我正在尝试使用来自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而不是新的ErrorMetric(),我为“diff”变量获得的值是:
相同图片:1949
删除一句话:766
从页面上的任何字词中删除一个字母:75
是否有更好,更准确的方式,然后我正在尝试检查是否有实际的变化?