二次元配列に変換する bmp 画像があります。それはうまくいきます。しかし、1 つのピクセル (座標 (i,j)) の色をその隣のピクセル (8 ピクセル) と比較する必要があります。1 つまたは複数が同じ色を持っている場合、それらを他の隣接する色と比較して.... そこで、再帰関数を使用する予定です。
コード:
void verifIdPoint (int TG[NBLIG][NBCOL], int T[NBLIG][NBCOL], short int Tpassage[NBLIG][NBCOL], int i, int j)
{
int u, v;
//printf ("saisie: %d %d \n", i, j);
//system("pause");
for (u=i-1; u<=i+1; u++)
{
for(v=j-1; v<=j+1; v++)
{
if(u>0 || v>0 || u<NBLIG || v<NBCOL)
{
if (TG[u][v] == TG[i][j])
{
tableauImgIntermediaire (TG, T, i, j);
//printf ("TG[%d][%d]===== TG[%d][%d]\n", u, v, i, j);
if (u<=0 || v<=0 || u>=NBLIG || v>=NBCOL)
{
}
else
{
if (Tpassage[u][v] == 0)
{
printf ("Passage: u v T %d %d %d \n", u, v, Tpassage[u][v]);
Tpassage[u][v] = 1;
verifIdPoint (TG, T, Tpassage, u, v);
}
}
}
}
}
}
}
このコードは、画像の一部だけが同じ色 (中央の灰色の円など) の画像で機能します。しかし、色が (0,0) から (300,200) までの棒のようなものになると、「アクセス違反 (セグメントフォルト)」 エラーが発生します...
画像サイズは 300x200 です。割り当てられていない配列の一部にアクセスしようとしているからだと思います。