0

我试图通过逐像素加载来计算图像的平均值。我的图像有 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) = [ ].

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

4

0 回答 0