我试图通过逐像素加载来计算图像的平均值。 我的图像有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) = [ ].
我非常确定代码的正确性和图像的完整性(我试过不同的代码)。知道为什么会这样吗?