You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50x作业Filter-More中Edges函数代码异常求助

CS50x Filter-More 任务 Edges 函数输出异常求助

我编写了CS50x Problem Set 4中Filter-More任务的Edges函数代码,按自己的理解逻辑是正确的,但实际输出结果有误,希望能得到帮助。

Edges函数代码

void edges(int height, int width, RGBTRIPLE image[height][width])
{
    int Gx[3][3] = { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } };

    int Gy[3][3] = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } };

    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            int sumGx[3] = { 0, 0, 0 };
            int sumGy[3] = { 0, 0, 0 };

            for (int dy = -1; dy <= 1; dy++)
            {
                for (int dx = -1; dx <= 1; dx++)
                {
                    int ky = y + dy;
                    int kx = x + dx;

                    if ((ky > 0 && ky < height) && (kx > 0 && kx < width))
                    {
                        sumGx[0] += Gx[dy + 1][dx + 1] * image[ky][kx].rgbtRed;
                        sumGx[1] += Gx[dy + 1][dx + 1] * image[ky][kx].rgbtGreen;
                        sumGx[2] += Gx[dy + 1][dx + 1] * image[ky][kx].rgbtBlue;

                        sumGy[0] += Gy[dy + 1][dx + 1] * image[ky][kx].rgbtRed;
                        sumGy[1] += Gy[dy + 1][dx + 1] * image[ky][kx].rgbtGreen;
                        sumGy[2] += Gy[dy + 1][dx + 1] * image[ky][kx].rgbtBlue;
                    }
                }
            }

            int pixel_value[3] = { 0, 0, 0 };

            for (int i = 0; i < 3; i++)
            {
                if ((sumGx[i] != 0) && (sumGy[i] != 0))
                {
                    int squaredGx = sumGx[i] * sumGx[i];
                    int squaredGy = sumGy[i] * sumGy[i];
                    int edge = round(sqrt(squaredGx + squaredGy));

                    pixel_value[i] = edge > 255 ? 255 : edge;
                }
            }
            image[y][x].rgbtRed = pixel_value[0];
            image[y][x].rgbtGreen = pixel_value[1];
            image[y][x].rgbtBlue = pixel_value[2];
        }
    }
}

RGBTRIPLE结构体定义

typedef struct
{
    BYTE  rgbtBlue;
    BYTE  rgbtGreen;
    BYTE  rgbtRed;
} __attribute__((__packed__))
RGBTRIPLE;

内容的提问来源于stack exchange,提问作者Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:20:38