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