使用CImg逐像素加载图像时的分段错误

时间:2013-11-27 16:18:02

标签: c++ image cimg

我试图通过逐像素加载来计算图像的平均值。 我的图像有6个通道,高度为512,深度为1。 它存储在包含2个元素的ImgList的第一个位置。

我的代码如下:

int main(){
float mean = 0;
CImgList<float> img;
int c, x, y;
for(c=0; c<6; ++c)
    for(x=0; x<512; ++x)
        for(y=0; y<512; ++y){
            img.load_cimg("test_images/Simul_PolSAR.cimg", 0, 0, x, y, 0, c, x, y, 0, c);
            mean += img(0)(0,0,0,0);
        }
mean = mean/(6*512*512);

}

当我运行它时,一切正常,直到“c”的值从0变为1.然后,访问img(0)(0,0,0,0)的行使程序崩溃并出现分段错误。

如果我检查:

img.load_cimg("image.cimg", 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);  
img(0).print();

结果是:

CImg<float>: this = 0x14330f8, size = (0,0,0,0) [0 b], data = (float*)(nil) (non-shared) = [ ].

我非常确定代码的正确性和图像的完整性(我试过不同的代码)。知道为什么会这样吗?

0 个答案:

没有答案