0

我对图像处理相当陌生,最近发现了 AForge 库。我一直在尝试在 2 张图像之间进行基本比较,我希望它返回它们之间的相似度百分比。但是,由于有一个空数组,我经常收到一个 Index Out of Bounds 异常,但我不确定为什么ex.ProcessImage返回一个空数组。我几乎复制了文档中提供的示例代码,但我仍然遇到错误。这是我的代码:

static class Run
{
    public static void go()
    {
        string filename1 = null;
        string filename2 = null;

        filename1 = "a.a.jpg";
        filename2 = "b.b.jpg";

        Bitmap image1 = new Bitmap(filename1);
        Bitmap image2 = new Bitmap(filename2);

        ExhaustiveTemplateMatching ex = new ExhaustiveTemplateMatching( 0 );
        TemplateMatch[] match  = ex.ProcessImage (image1, image2);

        float similarity = match[0].Similarity; //where the error occurs

        Console.WriteLine("They are" + similarity + "% similar.");
    }
}

我唯一能想象的就是我如何制作位图。但是,我确实相信我做对了。我也尝试过其他初始化位图的方法,但我仍然收到同样的错误。

这可能是我没有意识到的一些愚蠢的错误,但任何帮助将不胜感激。

4

2 回答 2

0

如果你得到一个IndexOutOfRangeException,这表明它ex.ProcessImage返回了一个空数组。接下来要做的是找出原因。大概没有模板匹配...

顺便说一句,这段代码毫无意义地冗长:

string filename1 = null;
string filename2 = null;

filename1 = "a.a.jpg";
filename2 = "b.b.jpg";

它会更短更清晰:

string filename1 = "a.a.jpg";
string filename2 = "b.b.jpg";
于 2012-06-27T14:57:25.437 回答
0

将图像另存为 .bmp 并重试。

 string filename1 = "a.a.bmp";
 string filename2 = "b.b.bmp";
于 2016-04-28T19:47:34.767 回答