CS50(Pset4)过滤器:边缘

CS50(Pset4)过滤器:边缘,c,cs50,C,Cs50,我目前正在处理Pset4,我的Edge函数似乎无法通过CS50测试。我想不出我的代码有什么问题。错误是- :(边正确过滤中间像素 应为“210 150 60\n”,而不是“255 150 60\n” :(边正确过滤边上的像素 应为“213 228 255\n”,而不是“255 228 255\n” :(边正确过滤角点中的像素 应为“76 117 255\n”,而不是“100 117 255\n” :(边缘正确过滤3x3图像 应为“76117255\n21…”,而不是“100117255\n2…”

我目前正在处理Pset4,我的Edge函数似乎无法通过CS50测试。我想不出我的代码有什么问题。错误是-

:(边正确过滤中间像素 应为“210 150 60\n”,而不是“255 150 60\n”

:(边正确过滤边上的像素 应为“213 228 255\n”,而不是“255 228 255\n”

:(边正确过滤角点中的像素 应为“76 117 255\n”,而不是“100 117 255\n”

:(边缘正确过滤3x3图像 应为“76117255\n21…”,而不是“100117255\n2…”

:(边正确过滤4x4图像 应为“76117255\n21…”,而不是“100117255\n2…”

void边(整数高度、整数宽度、RGB三重图像[高度][宽度])
{
RGB三重图像复制[高度][宽度];
对于(int i=0;i高度-1 | | i+m<0 | | j+n>宽度-1 | | j+n<0)
{
继续;
}
其他的
{
GxB+=图像[i+m][j+n].rgbtBlue*sobel[m+1][n+1];
GxG+=图像[i+m][j+n].rgbtGreen*sobel[m+1][n+1];
GxR+=图像[i+m][j+n].rgbtRed*sobel[m+1][n+1];
GyB+=图像[i+m][j+n].rgbtBlue*sobel[n+1][m+1];
GyG+=图像[i+m][j+n].rgbtGreen*sobel[n+1][m+1];
GxR+=图像[i+m][j+n].rgbtRed*sobel[n+1][m+1];
}
}
}
intb=圆形(sqrt(pow(GxB,2)+pow(GyB,2));
int G=圆形(sqrt(pow(GxG,2)+pow(GyG,2));
int R=圆形(sqrt(pow(GxR,2)+pow(GyR,2));
如果(B>255)
{
B=255;
}
如果(G>255)
{
G=255;
}
如果(R>255)
{
R=255;
}
if(B<0)
{
B=0;
}
if(G<0)
{
G=0;
}
if(R<0)
{
R=0;
}
imagecopy[i][j].rgbtBlue=B;
imagecopy[i][j].rgbtGreen=G;
imagecopy[i][j].rgbtRed=R;
}
}
对于(int i=0;i

那里有一个打字错误:

GxR += image[i + m][j + n].rgbtRed * sobel[n + 1][m + 1];

它应该是
GyR

“我目前正在处理Pset4和我的边缘函数”我不知道这意味着什么,我只知道编程。如果你想问谁知道,请改为询问。我投票结束这个问题,因为(不是)给定了它所属的信息(或需要更多细节).好的,知道了,谢谢!下次我一定会记住这一点的。这就解决了。非常感谢!
GxR += image[i + m][j + n].rgbtRed * sobel[n + 1][m + 1];