Я новичок в области сравнения изображений.
Я использую 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 разных пикселей, но изображение diff по-прежнему содержит выделенные различия
Итак, мой вопрос заключается в том, почему, когда искажение равно 0, в разностном изображении все еще выделяются различия. Я делаю что-то не так, или это ожидаемое поведение?
Можно изменить приведенный выше код, чтобы, когда искажение равно 0, изображение различий не содержало выделенных отличий?
Compare
? - person dlemstra   schedule 07.12.2019