【问题标题】:Image Processing with AForge: Empty Array?使用 AForge 进行图像处理:空数组?
【发布时间】:2012-06-27 14:55:34
【问题描述】:

我对图像处理相当陌生,最近发现了 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.");
    }
}

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

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

【问题讨论】:

  • 我从来没有弄清楚是什么导致了这个问题,但我用完全相同的代码创建了一个新项目并且它工作正常。所以,这个问题不再需要回答了。

标签: c# image image-processing indexoutofboundsexception aforge


【解决方案1】:

如果您收到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";

【讨论】:

  • 我这样做是因为我最初将它放在我要输入文件名的地方,然后将其删除。 “为什么”是我想要弄清楚的。
  • @NathanPrice:那么你的问题实际上不是关于 IndexOutOfBoundsException - 它是“为什么 ExhaustiveTemplateMatching 返回一个空数组”。
  • 好的,很抱歉我的问题不符合我的要求。我现在将对其进行编辑以反映这一点。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 2011-06-13
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多