C# ImageMagick Sharp比较敏感
我试着比较两张图片。我复制了我正在使用的原始jpeg,并在上面画了一条小线 然后我运行了下面的代码,使用原始的和修改过的JPEG,最后得到了一个非常红的图像C# ImageMagick Sharp比较敏感,c#,imagemagick,C#,Imagemagick,我试着比较两张图片。我复制了我正在使用的原始jpeg,并在上面画了一条小线 然后我运行了下面的代码,使用原始的和修改过的JPEG,最后得到了一个非常红的图像 static void Main(string[] args) { Console.WriteLine("Hello World!"); MagickNET.SetTempDirectory(@"C:\scratch"); MagickImage oldImage = new Magi
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
MagickNET.SetTempDirectory(@"C:\scratch");
MagickImage oldImage = new MagickImage(@"C:\Users\Craig\Pictures\orig.jpg");
MagickImage newImage = new MagickImage(@"C:\Users\Craig\Pictures\changed.jpg");
newImage.Crop(oldImage.BaseWidth, oldImage.BaseHeight);
using (MagickImage diffImage = new MagickImage())
{
double diff = oldImage.Compare(newImage, ErrorMetric.Absolute, diffImage);
Console.WriteLine($"Diff is {diff}...");
diffImage.Write(@"C:\Users\Craig\Pictures\diff.jpg");
Console.ReadKey();
}
}
我认为问题在于,它太精确了,jpeg被修改了一点(有损?)。有没有办法让它平静下来,寻找更大的变化?因为如果你看右下角的图片,你可以看到我画的笑脸(仅限于嘴和眼睛)。也许底部右侧1.5厘米,右侧1.5厘米
我认为答案是“Fuzz”,但我看不出如何将其应用于我的代码。JPEG是一种有损压缩,因此保存它会更改值。您应该使用PNG或TIFF而不是JPG来执行此操作。不过,您应该能够在ImageMagick命令行比较中使用-fuzz<代码>比较-模糊20%-度量rmse图像1图像2差异图像 输入1: 输入2: 比较无模糊:
compare -metric rmse lena.jpg lena2.jpg diffimage.png
与fuzz相比:
compare -fuzz 20% -metric rmse lena.jpg lena2.jpg diffimage2.png
对不起,我不知道其他API中的等效项