程序中出现异常错误

exception error in program

本文关键字:异常 错误 程序      更新时间:2023-10-16
int maxNum(int *n)
{
    int Maximum = n[0];
    for(int i = 1; i <= 8; i++)
    {
        if( Maximum < n[i] )
            Maximum = abs(n[i]);
    }
    return Maximum;
}
void DibHomoginityDetect(CDib& dib)
{
    register int i,j,x[8];
    int w = dib.GetWidth();
    int h= dib.GetHeight();
    CDib cpy =dib;
    BYTE** ptr1 = dib.GetPtr();
    BYTE** ptr2 = cpy.GetPtr();
    for(j = 1;j<h-1;j++)
    {
        for(i=1;i<w-1;i++)
        {
            x[1]= (ptr2[j][i]-ptr2[j-1][i-1]);
            x[2] =(ptr2[j][i]-ptr2[j-1][i]);
            x[3] =(ptr2[j][i]-ptr2[j-1][i+1]);
            x[4] =(ptr2[j][i]-ptr2[j][i-1]);
            x[5] =(ptr2[j][i]-ptr2[j][i+1]);
            x[6] =(ptr2[j][i]-ptr2[j+1][i-1]);
            x[7] =(ptr2[j][i]-ptr2[j+1][i]);
            x[8] =ptr2[j][i]-ptr2[j+1][i+1];
            //assign the central pixel of window to image central pixel
            ptr1[j][i] = (BYTE)maxNum(x);
        }
    }
}

这个程序有什么问题..据我了解它应该可以工作,但我收到异常错误...

任何人都可以告诉我,我在哪里犯了错误.. .. 谢谢

从代码中很难分辨出来,但我想你的 for 循环应该真的是:

for(int i = 0; i < 8; i++)

C++ 中的数组从零开始索引,而不是从 1 开始索引。

不知道这是否导致了错误:

for(j = 1;j<h-1;j++)
{
    for(i=1;i<w-1;i++)
    {
        x[1]= (ptr2[j][i]-ptr2[j-1][i-1]);
        x[2] =(ptr2[j][i]-ptr2[j-1][i]);
        x[3] =(ptr2[j][i]-ptr2[j-1][i+1]);
        x[4] =(ptr2[j][i]-ptr2[j][i-1]);
            x[5] =(ptr2[j][i]-ptr2[j][i+1]);
        x[6] =(ptr2[j][i]-ptr2[j+1][i-1]);
        x[7] =(ptr2[j][i]-ptr2[j+1][i]);
        x[8] =ptr2[j][i]-ptr2[j+1][i+1];

    //assign the central pixel of window to image central pixel
    ptr1[j][i] = (BYTE)maxNum(x);   
    }
}

似乎 x[1]...x[8] 将始终是i=w-2j=h-2时的值