1. 程式人生 > >讀取BMP影象每一畫素點RGB資料

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

      對於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值。