我有一个 bmp 图像,我将其转换为二维数组。那工作很好。但我需要将一个像素(坐标 (i,j))与其相邻像素(8 个像素)的颜色进行比较。如果一个或多个具有相同的颜色,我会将它们与其他邻居进行比较,然后......所以我打算使用递归函数。
编码:
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。我认为,那是因为我正在尝试访问未分配的数组的一部分。