使用AForge进行图像处理:空数组?

时间:2012-06-27 14:55:34

标签: c# image image-processing indexoutofboundsexception aforge

我对图像处理相当新,我最近找到了AForge库。我一直在尝试两个图像之间的基本比较,我希望它返回它们之间的相似性百分比。但是,由于有一个空数组,我不断得到一个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.");
    }
}

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

这可能是一些我没有意识到的愚蠢错误,但任何帮助都会非常感激。

2 个答案:

答案 0 :(得分: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";

答案 1 :(得分:0)

将图像保存为.bmp,然后重试。

 string filename1 = "a.a.bmp";
 string filename2 = "b.b.bmp";