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

轉灰階的問題

尚未結案
yana125
一般會員


發表:16
回覆:17
積分:6
註冊:2006-10-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-01 22:12:31 IP:203.68.xxx.xxx 訂閱
以下是轉灰階的程式 但有幾行看不懂 麻煩各位前輩指導 <textarea class="cpp" rows="10" cols="60" name="code"> void __fastcall TForm1::Button5Click(TObject *Sender) { Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Byte *ptr; int r,g,b; int gray; int i,j; int threshold; Bmp->PixelFormat=pf24bit; Bmp->Assign(Image1->Picture->Bitmap); for(j=0;jHeight;j ) { ptr = (Byte *)Bmp->ScanLine[j]; for(i=0;iWidth;i ) { b=ptr[i*3]; g=ptr[i*3 1]; r=ptr[i*3 2]; gray=0.299*r 0.587*g 0.114*b; ptr[i*3]=(Byte)gray; ptr[i*3 1]=(Byte)gray; ptr[i*3 2]=(Byte)gray; } } Image2->Picture->Assign(Bmp); } </textarea>
其中 b=ptr[i*3]; g=ptr[i*3 1]; r=ptr[i*3 2]; 為什麼b,g,r要*3 g,r還要 1, 2 的
編輯記錄
yana125 重新編輯於 2007-05-01 22:51:38, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-02 09:43:03 IP:122.124.xxx.xxx 未訂閱
因為24bit pixelformat的像素排列方式為
BGRBGRBGR...

所以G的位址為B 1
所以R的位址為B 2
下一個B的位址為i*3

yana125
一般會員


發表:16
回覆:17
積分:6
註冊:2006-10-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-02 12:00:31 IP:203.68.xxx.xxx 訂閱

===================引 用 taishyang 文 章===================
因為24bit pixelformat的像素排列方式為
BGRBGRBGR...

所以G的位址為B 1
所以R的位址為B 2
下一個B的位址為i*3?


那如果是8bit 或是其他bit數 的話
排列方式也跟24bitpixelformat的像素排列方式ㄧ樣嗎??

taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-02 16:40:49 IP:122.124.xxx.xxx 未訂閱
不是,詳情請找BMP的spec.
系統時間:2024-04-30 5:48:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!