• 締切済み

インデックスが配列の境界外です。と出てしまいます。

C#で、HLS色空間による2値化などを利用した顔領域検出のプログラムを作っています。 文献を参考にプログラミングし、エラーも出なかったのですが… デバックすると、 f[i, j] = 0;のところで「インデックスが配列の境界外です。」と言われてしまいます。 何故なのか、どなたか教えてください。 よろしくお願いします。 --------------------プログラムの一部-------------------- public double minHue, maxHue;//肌色領域(色相) public double minSat, minLight;//肌色領域(彩度、明度) public void BinaryHue(Bitmap bmp0, int[,] f, bool flagBinaryDisp ) { int i, j, nx, ny, gray; double rr, gg, bb, c1, c2; double light, hue, saturation; Color col; nx = bmp0.Width; ny = bmp0.Height; for (j = 0; j < ny; j++) { for (i = 0; i < nx; i++) { col = bmp0.GetPixel(i, j); //原画像 rr = col.R; gg = col.G; bb = col.B; light = 0.299 * rr + 0.587 * gg + 0.114 * bb; c1 = (rr - light); c2 = (bb - light); hue = calcHue(c1, c2);//C2を基準 if (hue < 0) hue += 360.0; saturation = Math.Sqrt(c1 * c1 + c2 * c2);// / 255.0;//最大値を1 if ((hue >= minHue && hue <= maxHue && saturation > minSat)) { f[i, j] = 1; gray = 255; } else { f[i, j] = 0; gray = 0; } if (flagBinaryDisp) bmp0.SetPixel(i, j, Color.FromArgb(gray, gray, gray)); } } }

みんなの回答

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

普通に考えれば引数で渡しているfの配列が小さすぎるのではと思いますが、その前のコードがないのではっきりしたことはわかりません。

daekred-maria
質問者

お礼

ありがとうございます! なんとか画像も表示されるようになりました^^

関連するQ&A