首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么边缘函数会产生分割误差

为什么边缘函数会产生分割误差
EN

Stack Overflow用户
提问于 2022-11-01 23:06:18
回答 1查看 49关注 0票数 -2

我试着写,我可以根据Sobel滤波算法编辑图像,但是当我尝试使用边缘函数时,它仍然给了我分割误差,但是我不知道原因,谁能告诉我错误是什么?

该项目的目标是通过将每个像素颜色值与相应的矩阵相乘来将任何图像转换为边缘,但是当我这样做时,我得到了分割错误错误(核心转储),我该怎么办?

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

#include "helpers.h"
//#include "bmp.h"

//variables for
//int Gx_sum_red, Gx_sum_blue, Gx_sum_green, Gy_sum_red, Gy_sum_blue, Gy_sum_green;



// Convert image to grayscale
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
    //int height_edited = 0;
    //int width_edited = 0;
    //printf("height is %i, width is %i and RGBTRIPLE IS %i for green, %i for blue and %i for red\n", height, width,
    //        image[height_edited][width_edited].rgbtBlue, image[height_edited][width_edited].rgbtGreen, image[height_edited][width_edited].rgbtRed);
    //RGBTRIPLE temp
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            image[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed) / 3;
            image[i][j].rgbtGreen = (image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed) / 3;
            image[i][j].rgbtRed = (image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed) / 3;
        }
    }
    return;
}

// Reflect image horizontally
void reflect(int height, int width, RGBTRIPLE image[height][width])
{
    //int height_edited = height / 2;
    //int width_edited = width / 2;
    //printf("height is %i, width is %i and RGBTRIPLE IS %i for green, %i for blue and %i for red\n", height, width,
    //        image[height_edited][width_edited].rgbtBlue, image[height_edited][width_edited].rgbtGreen, image[height_edited][width_edited].rgbtRed);
    RGBTRIPLE temp;
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width / 2; j++)
        {
            temp.rgbtBlue = image[i][j].rgbtBlue;
            temp.rgbtGreen = image[i][j].rgbtGreen;
            temp.rgbtRed = image[i][j].rgbtRed;
            image[i][j].rgbtBlue = image[i][width - j].rgbtBlue;
            image[i][j].rgbtGreen = image[i][width - j].rgbtGreen;
            image[i][j].rgbtRed = image[i][width - j].rgbtRed;
            image[i][width - j].rgbtBlue = temp.rgbtBlue;
            image[i][width - j].rgbtGreen = temp.rgbtGreen;
            image[i][width - j].rgbtRed = temp.rgbtRed;
        }
    }
    return;
}

// Blur image
void blur(int height, int width, RGBTRIPLE image[height][width])
{
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            if (i == 0 && j == 0)
            {
                image[i][j].rgbtBlue = (image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 4;
                image[i][j].rgbtGreen = (image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 4;
                image[i][j].rgbtRed = (image[i][j].rgbtRed + image[i][j + 1].rgbtRed + image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed) / 4;
            }
            else if (i == 0 && j == width - 1)
            {
                image[i][j].rgbtBlue = (image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i + 1][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue) / 4;
                image[i][j].rgbtGreen = (image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i + 1][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen) / 4;
                image[i][j].rgbtRed = (image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i + 1][j - 1].rgbtRed + image[i + 1][j].rgbtRed) / 4;
            }
            else if (i == height - 1 && j == 0)
            {
                image[i][j].rgbtBlue = (image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue) / 4;
                image[i][j].rgbtGreen = (image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen) / 4;
                image[i][j].rgbtRed = (image[i - 1][j].rgbtRed + image[i - 1][j + 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed) / 4;
            }
            else if (i == height - 1 && j == width - 1)
            {
                image[i][j].rgbtBlue = (image[i - 1][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue) / 4;
                image[i][j].rgbtGreen = (image[i - 1][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen) / 4;
                image[i][j].rgbtRed = (image[i - 1][j - 1].rgbtRed + image[i - 1][j].rgbtRed + image[i][j - 1].rgbtRed + image[i][j].rgbtRed) / 4;
            }
            else if (i == 0 && (j != 0 || j != width - 1))
            {
                image[i][j].rgbtBlue = (image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue +
                                        image[i + 1][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 6;
                image[i][j].rgbtGreen = (image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen +
                                         image[i + 1][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 6;
                image[i][j].rgbtRed = (image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed +
                                       image[i + 1][j - 1].rgbtRed + image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed) / 6;
            }
            else if (i == height - 1 && (j != 0 || j != width - 1))
            {
                image[i][j].rgbtBlue = (image[i - 1][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue +
                                        image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue) / 6;
                image[i][j].rgbtGreen = (image[i - 1][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen +
                                         image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen) / 6;
                image[i][j].rgbtRed = (image[i - 1][j - 1].rgbtRed + image[i - 1][j].rgbtRed + image[i - 1][j + 1].rgbtRed +
                                       image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed) / 6;
            }
            else if (j == 0 && (i != 0 || i != height - 1))
            {
                image[i][j].rgbtBlue = (image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue +
                                        image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 6;
                image[i][j].rgbtGreen = (image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen +
                                         image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 6;
                image[i][j].rgbtRed = (image[i - 1][j].rgbtRed + image[i - 1][j + 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed +
                                       image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed) / 6;
            }
            else if (j == width - 1 && (i != 0 || i != height - 1))
            {
                image[i][j].rgbtBlue = (image[i - 1][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue +
                                        image[i + 1][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue) / 6;
                image[i][j].rgbtGreen = (image[i - 1][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen +
                                         image[i + 1][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen) / 6;
                image[i][j].rgbtRed = (image[i - 1][j - 1].rgbtRed + image[i - 1][j].rgbtRed + image[i][j - 1].rgbtRed + image[i][j].rgbtRed +
                                       image[i + 1][j - 1].rgbtRed + image[i + 1][j].rgbtRed) / 6;
            }
            else
            {
                image[i][j].rgbtBlue = (image[i - 1][j - 1].rgbtBlue + image[i - 1][j].rgbtBlue + image[i - 1][j + 1].rgbtBlue +
                                        image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue +
                                        image[i + 1][j - 1].rgbtBlue + image[i + 1][j].rgbtBlue + image[i + 1][j + 1].rgbtBlue) / 9;
                image[i][j].rgbtGreen = (image[i - 1][j - 1].rgbtGreen + image[i - 1][j].rgbtGreen + image[i - 1][j + 1].rgbtGreen +
                                         image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen +
                                         image[i + 1][j - 1].rgbtGreen + image[i + 1][j].rgbtGreen + image[i + 1][j + 1].rgbtGreen) / 9;
                image[i][j].rgbtRed = (image[i - 1][j - 1].rgbtRed + image[i - 1][j].rgbtRed + image[i - 1][j + 1].rgbtRed +
                                       image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed +
                                       image[i + 1][j - 1].rgbtRed + image[i + 1][j].rgbtRed + image[i + 1][j + 1].rgbtRed) / 9;
            }
        }
    }
    return;
}


// Detect edges
void edges(int height, int width, RGBTRIPLE image[height][width])
{
    int red_avg, blue_avg, green_avg;
    int fGx_sum_red, fGx_sum_blue, fGx_sum_green, fGy_sum_red, fGy_sum_blue, fGy_sum_green;
    int red_sum, blue_sum, green_sum;
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            //calculating the Gx sum of red values
            if (i == 0 && j == 0)
            {
                fGx_sum_red = (image[i][j + 1].rgbtRed * 2) + (image[i + 1][j + 1].rgbtRed * 1);
                fGx_sum_blue = (image[i][j + 1].rgbtBlue * 2) + (image[i + 1][j + 1].rgbtBlue * 1);
                fGx_sum_green = (image[i][j + 1].rgbtGreen * 2) + (image[i + 1][j + 1].rgbtGreen * 1);//
                fGy_sum_red = (image[i + 1][j].rgbtRed * 2) + (image[i + 1][j + 1].rgbtRed * 1);//
                fGy_sum_blue = (image[i + 1][j].rgbtBlue * 2) + (image[i + 1][j + 1].rgbtBlue * 1);//
                fGy_sum_green = (image[i + 1][j].rgbtGreen * 2) + (image[i + 1][j + 1].rgbtGreen * 1);//
            }
            else if (i == 0 && j == width - 1)
            {
                fGx_sum_red = (image[i][j - 1].rgbtRed * -2) + (image[i + 1][j - 1].rgbtRed * -1);
                fGx_sum_blue = (image[i][j - 1].rgbtBlue * -2) + (image[i + 1][j - 1].rgbtBlue * -1);
                fGx_sum_green = (image[i][j - 1].rgbtGreen * -2) + (image[i + 1][j - 1].rgbtGreen * -1);//
                fGy_sum_red = (image[i + 1][j - 1].rgbtRed * 1) + (image[i + 1][j].rgbtRed * 2);//
                fGy_sum_blue = (image[i + 1][j - 1].rgbtRed * 1) + (image[i + 1][j].rgbtBlue * 2);//
                fGy_sum_green = (image[i + 1][j - 1].rgbtGreen * 1) + (image[i + 1][j].rgbtGreen * 2);//
            }
            else if (i == height - 1 && j == 0)
            {
                fGx_sum_red = (image[i - 1][j + 1].rgbtRed * 1) + (image[i][j + 1].rgbtRed * 2);
                fGx_sum_blue = (image[i - 1][j + 1].rgbtBlue * 1) + (image[i][j + 1].rgbtBlue * 2);
                fGx_sum_green = (image[i - 1][j + 1].rgbtGreen * 1) + (image[i][j + 1].rgbtGreen * 2);//
                fGy_sum_red = (image[i - 1][j].rgbtRed * -2) + (image[i - 1][j + 1].rgbtRed * -1);//
                fGy_sum_blue = (image[i - 1][j].rgbtBlue * -2) + (image[i - 1][j + 1].rgbtBlue * -1);//
                fGy_sum_green = (image[i - 1][j].rgbtGreen * -2) + (image[i - 1][j + 1].rgbtGreen * -1);//
            }
            else if (i == height - 1 && j == width - 1)
            {
                fGx_sum_red = (image[i - 1][j - 1].rgbtRed * -1)+ (image[i][j - 1].rgbtRed * -2);
                fGx_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i][j - 1].rgbtBlue * -2);
                fGx_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i][j - 1].rgbtGreen * -2);//
                fGy_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i - 1][j].rgbtRed * -2);//
                fGy_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i - 1][j].rgbtBlue * -2);//
                fGy_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i - 1][j].rgbtGreen * -2);//

            }
            else if (i == 0 && (j != 0 || j != width - 1))
            {
                fGx_sum_red = (image[i][j - 1].rgbtRed * -2) + (image[i][j + 1].rgbtRed * 2) +
                              (image[i + 1][j - 1].rgbtRed * -1) + (image[i + 1][j + 1].rgbtRed * 1);
                fGx_sum_blue = (image[i][j - 1].rgbtBlue * -2) + (image[i][j + 1].rgbtBlue * 2) +
                               (image[i + 1][j - 1].rgbtBlue * -1) +  (image[i + 1][j + 1].rgbtBlue * 1);
                fGx_sum_green = (image[i][j - 1].rgbtGreen * -2) + (image[i][j + 1].rgbtGreen * 2) +
                                (image[i + 1][j - 1].rgbtGreen * -1) + (image[i + 1][j + 1].rgbtGreen * 1);//
                fGy_sum_red = (image[i + 1][j - 1].rgbtRed * 1) + (image[i + 1][j].rgbtRed * 2) + (image[i + 1][j + 1].rgbtRed * 1);//
                fGy_sum_blue = (image[i + 1][j - 1].rgbtBlue * 1) + (image[i + 1][j].rgbtBlue * 2) + (image[i + 1][j + 1].rgbtBlue * 1);//
                fGy_sum_green = (image[i + 1][j - 1].rgbtGreen * 1) + (image[i + 1][j].rgbtGreen * 2) + (image[i + 1][j + 1].rgbtGreen * 1);//
            }
            else if (i == height - 1 && (j != 0 || j != width - 1))
            {
                fGx_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i - 1][j + 1].rgbtRed * 1) +
                              (image[i][j - 1].rgbtRed * -2) + (image[i][j + 1].rgbtRed * 2);
                fGx_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i - 1][j + 1].rgbtBlue * 1) +
                               (image[i][j - 1].rgbtBlue * -2) + (image[i][j + 1].rgbtBlue * 2);
                fGx_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i - 1][j + 1].rgbtGreen * 1) +
                                (image[i][j - 1].rgbtGreen * -2) + (image[i][j + 1].rgbtGreen * 2);//
                fGy_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i - 1][j].rgbtRed * -2) + (image[i - 1][j + 1].rgbtRed * -1);//
                fGy_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i - 1][j].rgbtBlue * -2) + (image[i - 1][j + 1].rgbtBlue * -1);//
                fGy_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i - 1][j].rgbtGreen * -2) + (image[i - 1][j + 1].rgbtGreen * -1);//
            }
            else if (j == 0 && (i != 0 || i != height - 1))
            {
                fGx_sum_red = (image[i - 1][j + 1].rgbtRed * 1) + (image[i][j + 1].rgbtRed * 2) + (image[i + 1][j + 1].rgbtRed * 1);
                fGx_sum_blue = (image[i - 1][j + 1].rgbtBlue * 1) + (image[i][j + 1].rgbtBlue * 2) + (image[i + 1][j + 1].rgbtBlue * 1);
                fGx_sum_green = (image[i - 1][j + 1].rgbtGreen * 1) + (image[i][j + 1].rgbtGreen * 2) + (image[i + 1][j + 1].rgbtGreen * 1);//
                fGy_sum_red = (image[i - 1][j].rgbtRed * -2) + (image[i - 1][j + 1].rgbtRed * -1) +
                              (image[i + 1][j].rgbtRed * 2) + (image[i + 1][j + 1].rgbtRed * 1);//
                fGy_sum_blue = (image[i - 1][j].rgbtBlue * -2) + (image[i - 1][j + 1].rgbtBlue * -1) +
                               (image[i + 1][j].rgbtBlue * 2) + (image[i + 1][j + 1].rgbtBlue * 1);//
                fGy_sum_green = (image[i - 1][j].rgbtGreen * -2) + (image[i - 1][j + 1].rgbtGreen * -1) +
                                (image[i + 1][j].rgbtGreen * 2) + (image[i + 1][j + 1].rgbtGreen * 1);//
            }
            else if (j == width - 1 && (i != 0 || i != height - 1))
            {
                fGx_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i][j - 1].rgbtRed * -2) + (image[i + 1][j - 1].rgbtRed * -1);
                fGx_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i][j - 1].rgbtBlue * -2) + (image[i + 1][j - 1].rgbtBlue * -1);
                fGx_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i][j - 1].rgbtGreen * -2) + (image[i + 1][j - 1].rgbtGreen * -1);//
                fGy_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i - 1][j].rgbtRed * -2) +
                              (image[i + 1][j - 1].rgbtRed * 1) + (image[i + 1][j].rgbtRed * 2);//
                fGy_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i - 1][j].rgbtBlue * -2) +
                               (image[i + 1][j - 1].rgbtBlue * 1) + (image[i + 1][j].rgbtBlue * 2);//
                fGy_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i - 1][j].rgbtGreen * -2) +
                                (image[i + 1][j - 1].rgbtGreen * 1) + (image[i + 1][j].rgbtGreen * 2);//
            }
            else
            {
                fGx_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i - 1][j + 1].rgbtRed * 1) +
                              (image[i][j - 1].rgbtRed * -2) + (image[i][j + 1].rgbtRed * 2) +
                              (image[i + 1][j - 1].rgbtRed * -1) + (image[i + 1][j + 1].rgbtRed * 1);
                fGx_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i - 1][j + 1].rgbtBlue * 1) +
                               (image[i][j - 1].rgbtBlue * -2) + (image[i][j + 1].rgbtBlue * 2) +
                               (image[i + 1][j - 1].rgbtBlue * -1) + (image[i + 1][j + 1].rgbtBlue * 1);
                fGx_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i - 1][j + 1].rgbtGreen * 1) +
                                (image[i][j - 1].rgbtGreen * -2) + (image[i][j + 1].rgbtGreen * 2) +
                                (image[i + 1][j - 1].rgbtGreen * -1) + (image[i + 1][j + 1].rgbtGreen * 1);//
                fGy_sum_red = (image[i - 1][j - 1].rgbtRed * -1) + (image[i - 1][j].rgbtRed * -2) + (image[i - 1][j + 1].rgbtRed * -1) +
                              (image[i + 1][j - 1].rgbtRed * 1) + (image[i + 1][j].rgbtRed * 2) + (image[i + 1][j + 1].rgbtRed * 1);//
                fGy_sum_blue = (image[i - 1][j - 1].rgbtBlue * -1) + (image[i - 1][j].rgbtBlue * -2) + (image[i - 1][j + 1].rgbtBlue * -1) +
                               (image[i + 1][j - 1].rgbtBlue * 1) + (image[i + 1][j].rgbtBlue * 2) + (image[i + 1][j + 1].rgbtBlue * 1);//
                fGy_sum_green = (image[i - 1][j - 1].rgbtGreen * -1) + (image[i - 1][j].rgbtGreen * -2) + (image[i - 1][j + 1].rgbtGreen * -1) +
                                (image[i + 1][j - 1].rgbtGreen * 1) + (image[i + 1][j].rgbtGreen * 2) + (image[i + 1][j + 1].rgbtGreen * 1);//
            }


            printf("red_sum is %i and %i, blue_sum is %i and %i and green_sum is %i and %i\n", fGx_sum_red, fGy_sum_red, fGx_sum_blue, fGy_sum_blue,
                    fGx_sum_green, fGy_sum_green);
            //calculating sum of Gx and Gy for each color
            red_sum = (fGx_sum_red * fGx_sum_red) + (fGy_sum_red * fGy_sum_red);
            blue_sum = (fGx_sum_blue * fGx_sum_blue) + (fGy_sum_blue * fGy_sum_blue);
            green_sum = (fGx_sum_green * fGx_sum_green) + (fGy_sum_green * fGy_sum_green);
            printf("red_sum is %i, blue_sum is %i and green_sum is %i\n", red_sum, blue_sum, green_sum);

            red_avg = sqrt(red_sum);
            blue_avg = sqrt(blue_sum);
            green_avg = sqrt(green_sum);
            printf("red_avg is %i, blue_avg is %i and green_avg is %i\n", red_avg, blue_avg, green_avg);

            //updating colors values
            image[i][j].rgbtRed = red_avg > 255 ? 255 : red_avg;
            image[i][j].rgbtBlue = blue_avg > 255 ? 255 : blue_avg;
            image[i][j].rgbtGreen = green_avg > 255 ? 255 : green_avg;
            printf("image[i][j].rgbtRed is %i, image[i][j].rgbtBlue is %i and image[i][j].rgbtGreen is %i, i and j are %i and %i \n",
            image[i][j].rgbtRed, image[i][j].rgbtBlue, image[i][j].rgbtGreen, i, j);
            //continue;
        }
    }
    return;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 06:53:38

i == 0试图在这段代码中尊重image[i - 1][j]时。这超出了对图像数组的绑定访问权限,并为我触发了一个分段错误:

代码语言:javascript
复制
} else if (i == 0 && (j != 0 || j != width - 1)) {
   fGx_sum_red = (image[i - 1][j].rgbtRed * 0) ...

通过类比(换句话说,我不知道这是否是正确的算法)在该块中将i - 1替换为i

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74282698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档