框選的區塊取灰階值 |
答題得分者是:ikk
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
各位大大好: 現在可以將灰階地方取區塊,但是,我要在各區塊中取每個區塊的灰階值,而每個區塊的個灰階值存放置Memo1->Lines->Add(ObjCount); 可是,這個指令好像是在計算次數的,不知還有什麼方式可以使用? 最後,在請問每個區塊的範圍要如何取呢? 想了幾天還是想不出來!! 感謝 [code cpp] int X=200; int Y=40; int x_Get = 20; int y_Get = 20; int X_loop = X/x_Get; int Y_loop = Y/y_Get; int Left_Start = 0; int Top_Start = 0; for(int i=0; i Image1->Canvas->Rectangle( Left_Start i * x_Get, Top_Start j * y_Get, Left_Start (i 1) * x_Get, Top_Start (j 1) * y_Get); } [/code]
------
新手報到 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
要取出圖片中的值當然是要取出裡面的點,
使用CopyRect. [code cpp] TRect TargetRect; TRect SourceRect; TCanvas * pSourceCanvas; pCanvas = Image1->Canvas; SourceRect.Left = 0; SourceRect.Top = 0; SourceRect.Right = 20; SourceRect.Bottom = 20; TargetRect.Left = 0; TargetRect.Top = 0; TargetRect.Right = 20; TargetRect.Bottom = 20; TargetImage->Canvas->CopyRect(TargetRect, pCanvas, SourceRect); BYTE r; BYTE g; BYTE b; char Msg[128]; for(int x=0;x<20;x ) for(int y=0;y<20;y ) { r = GetRValue(TargetImage->Canvas->Pixels[x][y]); g = GetGValue(TargetImage->Canvas->Pixels[x][y]); b = GetBValue(TargetImage->Canvas->Pixels[x][y]); sprintf(Msg,"R(%d) G(%d) B(%d)", r, g, b); Memo1->Lines->Add(Msg); } [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com |
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
請問ikk大大:
為何我執行時出現 Undefined symbol 'pCanvas' 、Undefined symbol 'TargetImage'、Call to undefined function 'sprintf'這三個問題。 我是把它放置Image1->Canvas->Rectangle(Left_Start i * x_Get,Top_Start j * y_Get,Left_Start (i 1) * x_Get,Top_Start (j 1) * y_Get);底下執行時出現的。 感謝 ===================引 用 ikk 文 章=================== 要取出圖片中的值當然是要取出裡面的點, 使用CopyRect. [code cpp] TRect TargetRect; TRect SourceRect; TCanvas * pSourceCanvas; pCanvas = Image1->Canvas; SourceRect.Left = 0; SourceRect.Top = 0; SourceRect.Right = 20; SourceRect.Bottom = 20; TargetRect.Left = 0; TargetRect.Top = 0; TargetRect.Right = 20; TargetRect.Bottom = 20; TargetImage->Canvas->CopyRect(TargetRect, pCanvas, SourceRect); BYTE r; BYTE g; BYTE b; char Msg[128]; for(int x=0;x<20;x ) for(int y=0;y<20;y ) { r = GetRValue(TargetImage->Canvas->Pixels[x][y]); g = GetGValue(TargetImage->Canvas->Pixels[x][y]); b = GetBValue(TargetImage->Canvas->Pixels[x][y]); sprintf(Msg,"R(%d) G(%d) B(%d)", r, g, b); Memo1->Lines->Add(Msg); } [/code]
------
新手報到 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
ikk大大你好:
pixel值是我要的,但是我要把圖上灰階部分取各20*20的區塊,並且分別對這每個區塊取pixel值,分段顯現出各區塊的pixel值在Memo,除了一塊一塊去取,還有和方式呢? ![]() ===================引 用 ikk 文 章=================== 取出pixel值, 不是你要的?? [code cpp] r = GetRValue(TargetImage->Canvas->Pixels[x][y]); g = GetGValue(TargetImage->Canvas->Pixels[x][y]); b = GetBValue(TargetImage->Canvas->Pixels[x][y]); [/code]
------
新手報到 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
===================引 用 ikk 文 章=================== 把抓出RGB的code 放到你的for迴圈, 就可以辦到... ================================================ ikk大大你好: 我把程式改成這樣,先測試一個區塊的灰階值,但是,灰階值全部顯示為255,不知又是那裡不對了? 麻煩大大 [code cpp] int X=20; int Y=20; int x_Get = 20; int y_Get = 20; int X_loop = X/x_Get; int Y_loop = Y/y_Get; int Left_Start = 0; int Top_Start = 0; BYTE r; BYTE g; BYTE b; char Msg[128]; int x,y; for(int i=0; i Image1->Canvas->Rectangle( Left_Start i * x_Get, Top_Start j * y_Get, Left_Start (i 1) * x_Get, Top_Start (j 1) * y_Get); r = GetRValue(Image1->Canvas->Pixels[x][y]); g = GetGValue(Image1->Canvas->Pixels[x][y]); b = GetBValue(Image1->Canvas->Pixels[x][y]); sprintf(Msg,"R(%d) G(%d) B(%d)", r, g, b); Memo1->Lines->Add(Msg); } [/code]
------
新手報到 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
===================引 用 ikk 文 章=================== Image1 放的是你的圖嗎? Image1->Canvas->Rectangle() 只是用來畫框, 跟取值沒關係... ================================================ ikk大大你好: Image1 放的是我的圖檔。 請問是以下的程式碼都可以不用嗎? 難道只能先用for迴圈範圍取一個區塊20*20裡面的灰階值做完,而另一個區塊需在另外寫一個for迴圈的範圍在取呢 ![]() [code cpp] int X=20; int Y=20; int x_Get = 20; int y_Get = 20; int X_loop = X/x_Get; int Y_loop = Y/y_Get; int Left_Start = 0; int Top_Start = 0; for(int i=0; i Image1->Canvas->Rectangle( Left_Start i * x_Get, Top_Start j * y_Get, Left_Start (i 1) * x_Get, Top_Start (j 1) * y_Get); } [/code]
------
新手報到 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
===================引 用 ikk 文 章=================== 這裡的X_loop 與 Y_loop就是要取出多少個20*20的區域呀... 共取出 X_loop * Y_loop 個 ================================================ ikk大大你好: 以下為程式碼,這個程式碼我是用成取一個20*20的區域,可以取到我要的灰階區,但是我要在此區域得知其20*20的總灰階值,就是不行,出現 R(0) G(0) B(0) 就只有這一列。 麻煩大大 ![]() [code cpp] int X=20; int Y=20; int x_Get = 20; int y_Get = 20; int X_loop = X/x_Get; int Y_loop = Y/y_Get; int Left_Start = 0; int Top_Start = 0; BYTE r; BYTE g; BYTE b; char Msg[128]; int x,y; for(int i=0; i Image1->Canvas->Rectangle( Left_Start i * x_Get, Top_Start j * y_Get, Left_Start (i 1) * x_Get, Top_Start (j 1) * y_Get); r = GetRValue(Image1->Canvas->Pixels[x][y]); g = GetGValue(Image1->Canvas->Pixels[x][y]); b = GetBValue(Image1->Canvas->Pixels[x][y]); sprintf(Msg,"R(%d) G(%d) B(%d)", r, g, b); Memo1->Lines->Add(Msg); } [/code]
------
新手報到
編輯記錄
913028 重新編輯於 2009-03-24 15:48:35, 註解 無‧
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
913028
一般會員 ![]() ![]() 發表:30 回覆:41 積分:19 註冊:2008-06-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |