如何在我的C ++代码中修复“以退出代码139完成的过程”?

时间:2019-05-08 20:55:18

标签: c++ multidimensional-array magick++

基本上,我正在尝试编写程序,以在终端中使用ASCII字母重新创建JPG图像,但是我被卡在函数上,该函数应返回结构的2D向量。每个结构都有代表像素RGB值的三个整数。当我尝试打印任何值时,会有一些奇怪的退出代码。代码还不多,所以也许有人可以看看...

退出代码:“进程完成,退出代码为139(被信号11:SIGSEGV中断)”

struct REDGREENBLUE
{
    int r, g, b;
};

std::vector<std::vector<REDGREENBLUE>> getPixelColor(Magick::Image img, int w, int h)
{
    std::vector<std::vector<REDGREENBLUE>> pixels;

    for(int i = 0; i < w; i++)
        for (int j = 0; j < h; j++)
        {
             Magick::ColorRGB color(img.pixelColor(j, i));

             pixels[w][h].r = color.red() * 255;
             pixels[w][h].g = color.green() * 255;
             pixels[w][h].b = color.blue() * 255;
        }

    return pixels;
}

int main(int argc, char ** argv)
{
    Magick::InitializeMagick(*argv);

    Magick::Image image("/home/damian/Pictures/ascii-pineapple.jpg");

    int width = image.baseColumns();
    int height = image.baseRows();

    std::vector<std::vector<REDGREENBLUE>> test = getPixelColor(image, width, height);

    for(int w = 0; w < width; w++)
        for(int h = 0; h < height; h++)
        {
            std::cout << test[w][h].r << std::endl;
        }

    return 0;
}

0 个答案:

没有答案