我对图像处理相当新,我最近找到了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.");
}
}
我能想象到的唯一一件事就是我如何做我的位图。但是,我相信我做的正确。我也尝试了其他初始化位图的方法,但我仍然收到同样的错误。
这可能是一些我没有意识到的愚蠢错误,但任何帮助都会非常感激。
答案 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";