2009年10月22日 星期四

HW2



本次作業是將一張24bit的彩色圖轉為灰階
所執行的結果,就是下圖所呈現的!上圖為介面圖示
上課所說的兩公式我把他抄了一下來
(R+G+B)/3  and  0.299*R+0.587*G+0.114*B
我採用的是 0.299*R+0.587*G+0.114*B
因為接兩樣都測試後發現(R+G+B)/3出來的結果比較黑顏色上區也別比較少
然後再利用for迴圈來一個一個pixel 轉為灰階下為部分程式碼
ProgressBar1->Position=0;
for(int x=0;x<=Image1->Picture->Bitmap->Width;x++)
{
for(int y=0;y<=Image1->Picture->Bitmap->Height;y++)
{
int color=0.299*GetRValue(Image1->Canvas->Pixels[x][y]) + 0.587*GetGValue(Image1->Canvas->Pixels[x][y]) + 0.114*GetBValue(Image1->Canvas->Pixels[x][y]);
Image2->Canvas->Pixels[x][y]=RGB(color,color,color);

}
ProgressBar1->Position++;
}
另外我還有加上進度表示軸ProgressBar1
以免在執行的時候像當掉一樣
但有一個小問題就ˋ當我執行完時假如image的大小比原圖小就會超出範圍不會自動縮小
試了好幾次都沒成功這還有待研究!!!


沒有留言:

張貼留言