請問一下有關 圖片的問題 |
答題得分者是:taishyang
|
shinesonba
一般會員 發表:5 回覆:2 積分:1 註冊:2009-08-24 發送簡訊給我 |
我的程式碼開啟圖片
有的可以順利 進行影像處理 有的卻不能 請問各位高手怎麼改 可以解決此問題 因為我不會上傳圖片@@ 所以麻煩各位高手下載一下檔案 XD 如果不太懂問題 打開程式 -> 開啟圖案 -> 圖片資料夾的兩張圖 -> 然後 灰階化 一張正常 一張顯示白色 幫忙解惑吧 謝謝
------
hi
附加檔案:4a924fbb22314_桌面.rar
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
直接改你的code
Graphics::TBitmap *Bmp2; Byte *ptr1, *ptr2; //設定彩色1 and 灰階2 位址指標 double sum; //sum = 彩色轉灰階值 unsigned int red, green, blue; LOGPALETTE MyPalette; //設定灰階調色盤 PALETTEENTRY pal[1]; //儲存位置 HPALETTE MyPaletteHandle; //------------產生一臨時圖像以便執行彩色轉黑白--------------- Bmp2= new Graphics::TBitmap(); Bmp2->Assign(Image1->Picture->Bitmap); Bmp2->PixelFormat=pf8bit; //------------設定臨時圖像的調色盤為灰階調色盤--------------- MyPalette.palVersion = 0x300; MyPalette.palNumEntries = 256; MyPaletteHandle=CreatePalette(&MyPalette); for(int i=0; i<256; i ){ pal[0].peRed=i; pal[0].peGreen=i; pal[0].peBlue=i; SetPaletteEntries(MyPaletteHandle, i ,1, pal); } Bmp2->Palette=MyPaletteHandle; //------------執行彩色轉黑白--------------------------------- for (int y=0; y < Bmp2->Height; y ){ ptr2 = (Byte*)Bmp2->ScanLine[y]; for (int x=0; x < Bmp2->Width; x ){ GetPaletteEntries(Bmp2->Palette, ptr2[x], 1, pal); red= pal[0].peRed; green=pal[0].peGreen; blue=pal[0].peBlue; sum= red*0.299 green*0.587 blue*0.114; if (sum>255){ sum=255; } if (sum<0){ sum=0; } ptr2[x]=(Byte)sum; } } //-------------顯示轉換後的灰階影像---------------------------- Image2->Picture->Bitmap->Assign(Bmp2); delete Bmp2;
編輯記錄
taishyang 重新編輯於 2009-08-24 17:04:04, 註解 無‧
|
shinesonba
一般會員 發表:5 回覆:2 積分:1 註冊:2009-08-24 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |