讀取BMP影象每一畫素點RGB資料

TensorFlow學習發表於2014-11-04

   對於24位bmp圖片,每一個畫素點存放著此點的RGB值。首先定義一個結構體,包含紅(red)、綠(green)、藍(blue)這三個欄位,如下:

[html] view plaincopy
  1. //畫素顏色值  
  2. typedef struct tagPOINT{  
  3.     BYTE b;  
  4.     BYTE g;  
  5.     BYTE r;  
  6. } POINT;  
      接下來定義用來存放每一畫素點RGB值的變數,為了與bmp影象的行、列對應,定義存放資料的變數如下:

[html] view plaincopy
  1. POINT **pix;      
     其中,pix[i][j]代表第i行j列處畫素點的RGB值。

  

     根據bmp影象寬與高,為指標變數動態分配記憶體空間,如下所示:

[html] view plaincopy
  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 plaincopy
  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值。

相關文章