二张JPG图片请问如何对比它的相似度,例如:90% ,100% ,,60%?
我给图片,请看一下,是二张监控图片,请问相似度如何计算?通过C#来实现。
二张JPG图片请问如何对比它的相似度,例如:90% ,100% ,,60%?
我给图片,请看一下,是二张监控图片,请问相似度如何计算?通过C#来实现。
.NET 5 的控制台应用程序实现,供参考:
using System;
using System.Drawing;
namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
var img1 = new Bitmap(@"D:\tmp\03.jpg");
var img2 = new Bitmap(@"D:\tmp\04.jpg");
if (img1.Size != img2.Size)
{
Console.Error.WriteLine("两张图片尺寸不一致");
return;
}
float diff = 0;
for (var y = 0; y < img1.Height; y++)
{
for (var x = 0; x < img1.Width; x++)
{
var pixel1 = img1.GetPixel(x, y);
var pixel2 = img2.GetPixel(x, y);
diff += Math.Abs(pixel1.R - pixel2.R);
diff += Math.Abs(pixel1.G - pixel2.G);
diff += Math.Abs(pixel1.B - pixel2.B);
}
}
var d = 100 * (diff / 255) / (img1.Width * img1.Height * 3);
Console.WriteLine("两张图片差异度: {0} %", d);
Console.WriteLine("两张图片相似度: {0} %", 100 - d);
Console.ReadKey();
}
}
}
输出结果:
两张图片差异度: 4.3947005 %
两张图片相似度: 95.6053 %