定义了一个结构体Image
typedef struct tagImage
{
int height;
int width;
double scale;
double **pic;
double **mag;
double **ori;
}Image;
然后把图像读入,得到了BITMAPFILEHEADER和BITMAPINFOHEADER,已经取出了各个像素的R,G,B值,现在想把每个像素的灰度值读入到Image结构体的pic成员中,本来想这样读进去:
FILE *pf = fopen("RGB.dat","w");
fprintf(pf,"图像灰度信息");
fputc('\n',pf);
for (int i=0; i < height; i++)
for (int j = 0; j <width; j++)
{//写入文件
long pos = i * width + j;
fprintf(pf,"pos%d = %d",pos,dataOfBmp[pos].rgbBlue);
fputc('\n',pf);
            //保存到pic中
         pic[i][j] = dataOfBmp[pos].rgbBlue;
}   
//结束写入RGB的文件
fclose(pf);但是读进去后在显示pic中的元素全是0.但是dataOfBmp[pos].rgbBlue的值正确。
这如何解决啊?

解决方案 »

  1.   

    设置断点,一步一步查看试试。对PIC进行初始化试试。希望有帮助,嘻嘻。
      

  2.   

    PIC是个指向指针的指针和二维数组没有直接的关系吧
    这样试试
    struct ...
    {...
    double *pic;
    ...
    }

    pic=new double[BITINFOHEADER.biWidth][BITINFOHEADER.biHeight];
    后面不变
      

  3.   

    有时候数据可能不是原始的RGB的值,比如位图有颜色表的话,它的值是索引而已。
      

  4.   

       双重指针指向了二维数组,二维数组的大小得定义下的吧。最好给他分配段内存,保留起来。
    pic=new double pic[BITINFOHEADER.biWidth][BITINFOHEADER.biHeight];
    delete pic;