Я периодически делаю снимки экрана с веб-страницей, но не могу получить код оценки страницы и хочу знать, изменилась ли страница, обычно меняются только некоторые слова на странице, иногда целые страница может быть изменена.
Я использовал opencvsharp, https://github.com/shimat/opencvsharp, и гистограмму для сравнения снимков экрана, но результат показывает, что сходство довольно высокое, даже если разница составляет 3 слова.
код гистограммы:
double compareFacesByHist(Mat img, Mat orgImg)
{
Mat tmpImg = new Mat();
if (img.Size().Equals(orgImg.Size()) == false)
{
Cv2.Resize(img, tmpImg, new OpenCvSharp.Size(orgImg.Cols, orgImg.Rows));
}
else
{
tmpImg = img;
}
tmpImg = tmpImg.CvtColor(ColorConversionCodes.BGR2HSV);
orgImg = orgImg.CvtColor(ColorConversionCodes.BGR2HSV);
int hBins = 256, sBins = 256;
int[] histSize = { hBins, sBins };
Rangef hRanges = new Rangef(0, 180);
Rangef sRanges = new Rangef(0, 255);
Rangef[] ranges = { hRanges, sRanges };
int[] channels = { 0, 1 };
Mat hist1 = new Mat(), hist2 = new Mat();
Cv2.CalcHist(new Mat[] { tmpImg }, channels, new Mat(), hist1, 2, histSize, ranges, true, false);
Cv2.Normalize(hist1, hist1, 0, 1, NormTypes.MinMax, -1, new Mat());
Cv2.CalcHist(new Mat[] { orgImg }, channels, new Mat(), hist2, 2, histSize, ranges, true, false);
Cv2.Normalize(hist2, hist2, 0, 1, NormTypes.MinMax, -1, new Mat());
double similarityValue = Cv2.CompareHist(hist1, hist2, HistCompMethods.Correl);// CV_COMP_CORREL);
return similarityValue;
}
некоторый результат:
+0,999999999797675
+0,999999648350145
Полагаю, гистограмма использует только цветовую информацию для сравнения двух изображений, трудно отразить изменение слов. Я хотел бы узнать лучший способ сравнить такие изображения. спасибо.