首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么把灰度图像的灰度值度入到数组

2012-03-13 
如何把灰度图像的灰度值度入到数组定义了一个结构体Imagetypedef struct tagImage{int heightint widthd

如何把灰度图像的灰度值度入到数组
定义了一个结构体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的值正确。
这如何解决啊?

[解决办法]
设置断点,一步一步查看试试。对PIC进行初始化试试。希望有帮助,嘻嘻。
[解决办法]
PIC是个指向指针的指针和二维数组没有直接的关系吧
这样试试
struct ...
{...
double *pic;
...
}

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


[解决办法]
有时候数据可能不是原始的RGB的值,比如位图有颜色表的话,它的值是索引而已。
[解决办法]
双重指针指向了二维数组,二维数组的大小得定义下的吧。最好给他分配段内存,保留起来。
pic=new double pic[BITINFOHEADER.biWidth][BITINFOHEADER.biHeight];
delete pic;

热点排行