全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:798
推到 Plurk!
推到 Facebook!

關於圖片顯示的問題

答題得分者是:JerryKuo
poaivy
中階會員


發表:40
回覆:78
積分:53
註冊:2004-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-28 10:48:35 IP:140.117.xxx.xxx 未訂閱
請教各位大大 假設我有一張PICTURE在IMAGE1上面 為什麼我已經更改過IMAGE1的PIXEL了再把改過的值映到IMAGE2上去的時候 顯現出來的圖片跟IMAGE1是一模一樣的而沒有根據我的值去改變圖片呢? 圖中有兩張圖片,右邊的是IMAGE2,底下則是他們所各自對應的PIXEL值, 我一直搞不懂為啥值不一樣了圖還是一樣的,請各位大大幫我解惑吧。 附上我的程式碼:
Image1->Picture->Bitmap->PixelFormat=pf24bit;
Graphics::TBitmap *BMP = new Graphics::TBitmap();
 Byte *ptr=NULL;
 BMP->Assign(Image1->Picture->Bitmap);
 for(int y=0;yHeight;y++)
 {
  ptr = (Byte *)BMP->ScanLine[y];
  for(int x=0;xWidth;x++)
  {
   int gray=0.3*ptr[x*3]+0.3*ptr[x*3+1]+0.4*ptr[x*3+2];
   int dd=(gray/2)*2;
   ptr[x*3]=ptr[x*3+1]=ptr[x*3+2]=dd;
     }
 }Image2->Picture->Assign(BMP);
 delete BMP;
< >< >
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 11:17:29 IP:220.135.xxx.xxx 未訂閱
你好: 因為Lena圖本來就是灰階(rgb應該都一樣),而轉換的系數是0.3,0.3,0.4, 總合還是1,假設rgb各為(100,100,100)經過系數轉換(30,30,40)總合100, 而在秀圖時就是用100繪出,繪出的點還是(100,100,100),結果跟沒處理時一樣 所以其實理想上,處理過的圖片是不會變化。除非圖片是彩色,才會有對藍 色加強的效果 而你的值之所以會變動是因為下面這兩行,gray是整數型態,小數位置會被自動 捨棄取整數,dd變得沒有作用,而這捨棄的值就是變動因素。如果把gray改成 浮點數就會有用啦。 int gray=0.3*ptr[x*3] 0.3*ptr[x*3 1] 0.4*ptr[x*3 2]; int dd=(gray/2)*2;
系統時間:2024-07-01 5:57:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!