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 に答える