gpt4 book ai didi

c# - 使用 ImageMagick 和 C# 比较两个图像

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:19 25 4
gpt4 key购买 nike

我想比较两张图片,然后生成并保存一张图片,显示已发现的所有差异,

例如: enter image description here

我正在使用 ImageMagick:https://magick.codeplex.com/但是他们没有 C# 的完整文档。我只找到:http://www.imagemagick.org/Usage/compare/

例如,此代码显示 0-1 的值,表示图片的相似程度:

    MagickImage img1 = new MagickImage(@"C:\test\Image1.jpg");
MagickImage img2 = new MagickImage(@"C:\test\Image2.jpg");
double diff = img1.Compare(img2,new ErrorMetric());

但是我怎样才能使用 ImageMagick 比较图像,然后保存如上例所示的结果和他们的网站?

更新:在 dlemstra 的帮助下,我编写了以下代码,并生成了假设显示差异的图像,如上例所示。 MagickImage img1 = new MagickImage(@"C:\test\Image1.jpg"); MagickImage img2 = new MagickImage(@"C:\test\Image2.jpg"); MagickImage img3 = new MagickImage(@"C:\test\Image3.jpg"); MagickImage img4 = new MagickImage(@"C:\test\DiffImage.jpg"); MagickImage img5 = new MagickImage(@"C:\test\DiffImage.jpg");

        var imgDiff = new MagickImage();

img1.Compare(img2, new ErrorMetric(), imgDiff);
imgDiff.Write(@"C:\test\Diff4.jpg");

img1.Compare(img3, new ErrorMetric(), imgDiff);
imgDiff.Write(@"C:\test\Diff5.jpg");

img1.Compare(img4, new ErrorMetric(), imgDiff);
imgDiff.Write(@"C:\test\Diff6.jpg");

img5.Compare(img4, new ErrorMetric(), imgDiff);
imgDiff.Write(@"C:\test\Diff7.jpg");

奇怪的结果是:当我比较以下两张图片时,唯一的区别是: enter image description here

这是我得到的结果(而不是上面来自“imageMagick”的例子 enter image description here

最佳答案

为此,您需要使用 Compare 方法的其他重载之一。下面的示例演示了如何执行此操作:

using (var img1 = new MagickImage(@"C:\test\Image1.jpg"))
{
using (var img2 = new MagickImage(@"C:\test\Image2.jpg"))
{
using (var imgDiff = new MagickImage())
{
double diff = img1.Compare(img2, new ErrorMetric(), imgDiff);
imgDiff.Write(@"C:\test\Diff-Image1-Image2.jpg");
}
}
}

但是当您使用 jpeg 图像(它们是有损的)时,您可能还想在第一张图像上设置 ColorFuzz:

img1.ColorFuzz = new Percentage(5); // adjust this value for your situation

这将使几乎相同的像素也匹配。

关于c# - 使用 ImageMagick 和 C# 比较两个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40360921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com