您的位置:首页 > 其它

读取BMP图像每一像素点RGB数据

2012-12-13 14:16 330 查看
      对于24位bmp图片,每一个像素点存放着此点的RGB值。首先定义一个结构体,包含红(red)、绿(green)、蓝(blue)这三个字段,如下:

//像素颜色值
typedef struct tagPOINT{
BYTE b;
BYTE g;
BYTE r;
} POINT;
      接下来定义用来存放每一像素点RGB值的变量,为了与bmp图像的行、列对应,定义存放数据的变量如下:

POINT **pix;
     其中,pix[i][j]代表第i行j列处像素点的RGB值。

  

     根据bmp图像宽与高,为指针变量动态分配内存空间,如下所示:

//为标准图像每一个像素申请内存
pix = (POINT **)malloc(sizeof(POINT*)*bi_in.biHeight);
for(i=0;i<bi_in.biHeight;i++)
*(pix+i)=(POINT*)malloc(sizeof(POINT)*bi_in.biWidth);
      其中,bi_in.biHeight为图像高度,bi_in.biWidth为图像宽度。

      读取图像每一像素点处的RGB值至pix变量中,如下:

//读取图像数据
for(i=0;i<bi_in.biHeight;i++)
for(j=0;j<bi_in.biWidth;j++)
fread(*(pix+i)+j,sizeof(POINT),1,fi);
      现在,pix变量中就存放了整幅图像数据。可以通过下标或者指针运算读取任意点处的RGB值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息