所以,我正在使用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
如果有人知道如何解决这个问题,请告诉我。 我发布了一个类似的问题,但我要求比较方法(我不知道如何比较图像)。在这篇文章中,我询问有关比较功能的异常,我在互联网上找到了。
答案 0 :(得分:0)
像这样更改你的代码;
if (matching.Length != 0 && matching[0].Similarity > 0.95f)