我在比较图像时遇到异常

时间:2016-07-11 14:47:39

标签: c# winforms

所以,我正在使用Windows窗体中的项目并且遇到一些问题。在这个项目中,我必须比较一个文件夹中的多个图像和屏幕截图。

如果屏幕截图包含图像,则Method必须返回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;
    }

所以关于我的问题,在任何第三次比较中,它都会给我以下例外:enter image description here

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

1 个答案:

答案 0 :(得分:0)

像这样更改你的代码;

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