OpenCVSharp实现获取两张图片的相似度百分比数值的C#例子
帮一位网友解决的一个摄像头不同时间段照片相似度对比问题而写的一个demo例子。
核心代码基于OpenCVSharp开发, 实现原理就是把两个图片转化为大小相同的灰度图,然后相减,再和原图比较一下得出结果差值 感觉效果还可以 底部有提供Demo源码下载地址 需要的可以下载看看
取图片相似度的效果图
需引用OpenCVSharp 开源库DLL
实现获取图片相似度的核心代码
float Similar(Mat src, Mat src2)
{
Mat gray1 = new Mat(src.Size(), src.Type()),
Mat gray2 = new Mat(src2.Size(), src2.Type());
Cv2.CvtColor(src, gray1, ColorConversionCodes.BGR2GRAY);
Cv2.CvtColor(src2, gray2, ColorConversionCodes.BGR2GRAY);
var size = new OpenCvSharp.Size(512, 512);
using (var scaledImg1 = gray1.Resize(size))
using (var scaledImg2 = gray2.Resize(size))
{
Cv2.Threshold(scaledImg1, scaledImg1, 128, 255, ThresholdTypes.BinaryInv);
Cv2.Threshold(scaledImg2, scaledImg2, 128, 255, ThresholdTypes.BinaryInv);
Mat res = new Mat(size, scaledImg1.Type());
Cv2.Absdiff(scaledImg1, scaledImg2, res);
var all = (float)scaledImg1.Sum();
var result = (float)res.Sum();
return result;
}
}