我是图像比较领域的新手。
我正在使用 C# 和 Magick.NET(Magick.NET-Q16-AnyCPU 版本:7.14.5)来比较屏幕截图。
使用 .ColorFuzz 我想实现某种像素容差,以忽略屏幕截图的差异。
这是我的代码:
double fuzzLevel = 0;
MagickImage baseHeaderView = new MagickImage(@"C:\githubActual.png");
MagickImage actualHeaderView = new MagickImage(@"C:\githubBase.png");
MagickImage diffView = new MagickImage();
baseHeaderView.ColorFuzz = (Percentage)fuzzLevel;
baseHeaderView.Compare(actualHeaderView, ErrorMetric.Absolute, diffView);
baseHeaderView.Composite(diffView, CompositeOperator.Over);
Console.WriteLine(baseHeaderView.GetAttribute("distortion"));
baseHeaderView.Write(@"C:\diffView.png");
这是 fuzzLevel 变量 = 0 时的差异图像。在这种情况下,baseHeaderView.GetAttribute("distortion") 将返回 614 个不同的像素。
当我将 fuzzLevel 更改为 75 时,baseHeaderView.GetAttribute("distortion") 返回 0 个不同的像素,但差异图像仍然包含突出显示的差异
所以,我的问题是为什么当失真等于 0 时,差异图像中仍然存在突出的差异。我做错了什么,还是这是预期的行为?
上面的代码可以改一下,那么当distortion为0的时候,diff image就不会包含任何高亮的差异了?