1

我正在尝试使用来自 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

有没有更好,更准确的方法,然后我正在尝试检查是否有实际变化?

4

0 回答 0