gpt4 book ai didi

CS50(2019)习题集 "Filter": "blur" somehow not working correctly

转载 作者:行者123 更新时间:2023-11-30 19:25:07 26 4
gpt4 key购买 nike

所以,我花了大约 5 个小时以上试图找出我的代码出了什么问题。我已经尝试使用在 Paint 中手动创建的 3x3 文件进行 debug50,一切似乎都按预期工作;每个像素围绕自身进行 3x3 扫描,并忽略不存在的像素,例如角落或边缘周围的像素。每种颜色的最终平均值也是正确的。但不知何故,当我用 check50 检查时,它给出了以下消息:

经过无数次的调整和头痛,我决定可能是时候向社区寻求帮助了。这是我的代码:

{
for (int h = 0; h < height; h++)
{
for (int w = 0; w < width; w++)
{
int avgfordiv = 0;
int neighvalgreen = 0;
int neighvalblue = 0;
int neighvalred = 0;

for (int hh = -1; hh < 2; hh++)
{
for (int ww = -1; ww < 2; ww++)
{
if ((h+hh) != height && (w+ww) != width && (h+hh) != -1 && (w+ww) != -1)
{
//sweep
avgfordiv++;//count up for division
neighvalgreen += image[h + hh][w + ww].rgbtGreen;
neighvalred += image[h + hh][w + ww].rgbtRed;
neighvalblue += image[h + hh][w + ww].rgbtBlue;
}
}
}
//add values to pixels
image[h][w].rgbtGreen = (int)(round((float)neighvalgreen / avgfordiv));
image[h][w].rgbtBlue = (int)(round((float)neighvalblue / avgfordiv));
image[h][w].rgbtRed = (int)(round((float)neighvalred / avgfordiv));

//check cap
if (image[h][w].rgbtGreen <= 255)
{}
else
image[h][w].rgbtGreen %= 255;

if (image[h][w].rgbtRed <= 255)
{}
else
image[h][w].rgbtRed %= 255;

if (image[h][w].rgbtBlue <= 255)
{}
else
image[h][w].rgbtBlue %= 255;
}
}
return;
}

最佳答案

制作图像的副本并使用该副本来计算红绿和蓝色的总量似乎可以解决此问题。

RGBTRIPLE copy[height][width];
for (int h = 0; h < height; i++)
{
for (int w = 0; w < width; j++)
{
copy[h][w] = image[h][w];
}
}

并在下面进行更改:

neighvalgreen += copy[h + hh][w + ww].rgbtGreen;
neighvalred += copy[h + hh][w + ww].rgbtRed;
neighvalblue += copy[h + hh][w + ww].rgbtBlue;

此外,您不需要检查值是否超过 255,因为您正在计算平均值,因此它永远不会超过 255。

关于CS50(2019)习题集 "Filter": "blur" somehow not working correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com