我在比较图像时遇到异常

本文关键字:遇到 异常 图像 比较 | 更新日期: 2023-09-27 17:56:35

所以,我正在Windows窗体中处理我的项目,但遇到了一个小问题。在这个项目中,我必须比较多个图像,这些图像位于一个文件夹中,带有屏幕截图。

如果屏幕截图包含图像,则方法必须返回 true,否则必须返回 false。文件夹中的所有图像都是"PNG"格式,从代码文件中获取它们后,我正在将格式更改为"Format24bppRgb",并且在任何第三次比较中,它给了我"IndexOutOfRange"。

我使用以下代码将图像与屏幕截图一一进行比较:

string[] addressArray = Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory(), "Kartebi2"), "*.png");
string[] imageAddress = new string[addressArray.Length];
Bitmap[] bitmap1 = new Bitmap[36];
Bitmap[] bitmapImage = new Bitmap[36];
for (int i = 0; i < bitmap1.Length; i++)
{
     bitmap1[i] = (Bitmap)System.Drawing.Image.FromFile(addressArray[i]);
     bitmapImage[i] = Form1.ConvertToFormat(bitmap1[i], System.Drawing.Imaging.PixelFormat.Format24bppRgb);
}

for (int i = 0; i < bitmapImage.Length; i++)
{
     if (CompareMethod.CompareImageMethod(bitmap, bitmapImage[i]))    
         imageAddress[i] = addressArray[i];
     else
         imageAddress[i] = null;
}

我正在使用以下比较方法:

    public static bool CompareImageMethod(Bitmap screenshot, Bitmap template)
    {
        bool result;
        ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.921f);
        TemplateMatch[] matching = tm.ProcessImage(screenshot, template);
        if (matching[0].Similarity > 0.95f)
            result = true;
        else result = false;
        return result;
    }

所以现在关于我的问题,在任何 3 rd 比较中,它都会给我以下异常:在此处输入图像描述

如果有人知道如何解决这个问题,请告诉我。我发布了一个类似的问题,但我要求比较方法(我不知道如何比较图像)。在这篇文章中,我询问了我在互联网上发现的有关比较功能的异常。

我在比较图像时遇到异常

像这样更改代码;

if (matching.Length != 0 && matching[0].Similarity > 0.95f)