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

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

[html]  view plain copy
  1. //像素颜色值  
  2. typedef struct tagPOINT{  
  3.     BYTE b;  
  4.     BYTE g;  
  5.     BYTE r;  
  6. } POINT;  
      接下来定义用来存放每一像素点RGB值的变量,为了与bmp图像的行、列对应,定义存放数据的变量如下:

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

  

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

[html]  view plain copy
  1. //为标准图像每一个像素申请内存  
  2.     pix = (POINT **)malloc(sizeof(POINT*)*bi_in.biHeight);  
  3.     for(i=0;i<bi_in.biHeight;i++)  
  4.         *(pix+i)=(POINT*)malloc(sizeof(POINT)*bi_in.biWidth);  
      其中,bi_in.biHeight为图像高度,bi_in.biWidth为图像宽度。


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

[html]  view plain copy
  1. //读取图像数据  
  2. for(i=0;i<bi_in.biHeight;i++)  
  3.     for(j=0;j<bi_in.biWidth;j++)  
  4.         fread(*(pix+i)+j,sizeof(POINT),1,fi);  
      现在,pix变量中就存放了整幅图像数据。可以通过下标或者指针运算读取任意点处的RGB值。
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值