線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2542
推到 Plurk!
推到 Facebook!

[影像處理]有關灰階化的疑問??

答題得分者是:n890377
parano
一般會員


發表:14
回覆:6
積分:4
註冊:2007-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-05 14:39:38 IP:140.114.xxx.xxx 訂閱
以下為灰階化程式:
<textarea class="cpp" rows="10" cols="60" name="code">void __fastcall TForm1::Button2Click(TObject *Sender) { Graphics::TBitmap *TheBitmap, *TempBitmap; int Width, Height; int clRGB; int **pix; double start,end,tot_time; TempBitmap= new Graphics::TBitmap(); TheBitmap=Image1->Picture->Bitmap; TempBitmap->Assign(TheBitmap); Width= TheBitmap->Width; Height= TheBitmap->Height; pix=new int*[Height]; start=clock(); for(int y=0;yCanvas->Handle,x,y); clRGB=(GetRValue(clRGB)*77 GetGValue(clRGB)*151 GetBValue(clRGB)*28)/256; TempBitmap->Canvas->Pixels[x][y]=TColor(RGB(clRGB,clRGB,clRGB)); } } TheBitmap->Assign(TempBitmap); end=clock(); tot_time=(end-start)/CLK_TCK; ShowMessage(AnsiString("Time = ") tot_time " 秒"); delete TempBitmap; } </textarea>
這是看別人寫的,其中一行看不懂:
clRGB=(GetRValue(clRGB)*77 GetGValue(clRGB)*151 GetBValue(clRGB)*28)/256;
為何要*77、*151、*28,之後再除256,這是什麼意思呢??
Image1->Canvas->Handle,x,y又是什麼意思??
有沒有大大能夠解釋一下?謝謝~~
johnpage
初階會員


發表:0
回覆:79
積分:40
註冊:2004-08-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-05 23:15:22 IP:218.175.xxx.xxx 訂閱
座標系轉換
n890377
一般會員


發表:17
回覆:16
積分:21
註冊:2006-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-07 23:39:17 IP:220.133.xxx.xxx 訂閱
其實只是寫灰階化程式可以不必這麼長,不過個人習慣不同.....
<textarea class="cpp" rows="10" cols="60" name="code"> if (Image1->Picture->Bitmap->Empty==true) ShowMessage("請載入圖檔!!"); Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Byte *ptr; int r,g,b; int gray; int i,j,y,cr,cb; 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]; y = 0.299*r 0.587*g 0.114*b; cr = 0.5*r-0.419*g-0.081*b 128; cb = -0.169*r-0.332*g 0.5*b 128; ptr[i*3]=y; ptr[i*3 1]=y; ptr[i*3 2]=y; } } Image2->Picture->Assign(Bmp); </textarea>
------
.
loverjersey
一般會員


發表:0
回覆:2
積分:0
註冊:2007-02-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-08 22:16:34 IP:218.165.xxx.xxx 訂閱
您好 小弟我是新手 最近在寫灰階的程式
是否可以幫我解適一下 下面兩行的意思 謝謝

Bmp->Assign(Image1->Picture->Bitmap);

ptr = (Byte *)Bmp->ScanLine[j];
johnpage
初階會員


發表:0
回覆:79
積分:40
註冊:2004-08-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-02-08 23:16:47 IP:218.175.xxx.xxx 訂閱
讀取像素
且以一整列做掃描
dicky9055
一般會員


發表:20
回覆:48
積分:18
註冊:2006-08-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-02-23 21:27:36 IP:211.76.xxx.xxx 訂閱
第一行是說將bmp設成和image1一樣的圖
第二個就如上一位大大說的..掃瞄每一列


===================引 用 文 章===================
您好 小弟我是新手 最近在寫灰階的程式?
是否可以幫我解適一下 下面兩行的意思 謝謝

Bmp->Assign(Image1->Picture->Bitmap);???

ptr?=?(Byte?*)Bmp->ScanLine[j];???
系統時間:2024-04-30 8:03:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!