2009年10月23日 星期五

HW02

這次的作業是要把彩色圖片變灰階,並且把讀到的位元顯示出來,
一開始我有想到是把色彩值做變化,
想說是不是把得到的色彩值除以2就可以了,
我記得好像125是灰色的
是有這樣想 可是卻不知道如何下手,
要如何讀色彩值當時的我是一竅不通,
後來老師公布了片段程式碼,
咦~原來指令跟中文意思是一樣的,
GetRValue//取的紅色的色彩值
GetGValue//取的綠色的色彩值
GetBValue//取的藍色的色彩值
去讀每個點的RGB值,然後做些運算
開始 先得知圖片的長寬 因為每個像素就是一個X,Y
所以一定要使用FOR 迴圈來讀取每個像素點
一切都很順利可以讀到每一個點並且將其直存到node的變數裡頭
奇怪的是,圖片的顏色怪怪的,部分是灰階色彩,部分卻變成有如曝光般的顏色















以下是我的程式碼:
int X,Y,node;
for(X=1;X<801;x++) y="1;Y<601;y++)" node="(GetRValue(Image1-">Canvas->Pixels[X][Y])
//Pixels[X][Y]) 位於(X,Y)座標的像素
+GetGValue(Image1->Canvas->Pixels[X][Y])
+GetBValue(Image1->Canvas->Pixels[X][Y]))/2;
Image2->Canvas->Pixels[X][Y]=RGB(node,node,node);
}

吼~原來,因為一次是讀RGB三個點的關係,所以要除以3才對。
聽同學說 老師有講,喔不= = 我不是故意沒聽到的!!
可是最後作出來的時候,有種爽快感呢!!
















成功!!

沒有留言:

張貼留言