讀取BMP影象每一畫素點RGB資料
阿新 • • 發佈:2019-01-03
對於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影象寬與高,為指標變數動態分配記憶體空間,如下所示:
其中,bi_in.biHeight為影象高度,bi_in.biWidth為影象寬度。//為標準影象每一個畫素申請記憶體 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);
讀取影象每一畫素點處的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值。