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

取PIXEL值和RGB值

 
nike880724
一般會員


發表:11
回覆:4
積分:3
註冊:2006-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-18 13:07:04 IP:125.233.xxx.xxx 未訂閱

友一張灰階的圖在Image上顯示~~是BMP檔~~

但我要取她的PIXEL值和RGB值怎ㄇ取~~

程式碼要怎ㄇ寫ㄋ??

void __fastcall TForm1::Image2Click(TObject *Sender)
{

for(int y=0;yfor(int x=0;xImage2->Canvas->Pixels[x][y];

}
那取RGBㄉ怎ㄇ寫ㄋ??

請各位大大給我指導依下~~因為我才剛學BCB~~

所以還有很多不懂~~請大大ㄇ包函~~

b740813
一般會員


發表:0
回覆:3
積分:0
註冊:2006-08-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-23 19:47:32 IP:210.70.xxx.xxx 未訂閱

由於Pixels是由3個byte組成:R G*256 B*256*256

所以,如果要分別取出來只要將Pixels做三種運算:

int R:Pixels % 256

int G:Pixels / 256

再將上面的值 % 256

int B:Pixels / 256*256

請試試...

nike880724
一般會員


發表:11
回覆:4
積分:3
註冊:2006-08-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-23 23:42:36 IP:220.140.xxx.xxx 未訂閱

那請問我上面所寫ㄉ取PIXEL值的程式碼是正確ㄉㄇ??

nike880724
一般會員


發表:11
回覆:4
積分:3
註冊:2006-08-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-08-23 23:44:50 IP:220.140.xxx.xxx 未訂閱

===================引 用 文 章===================

由於Pixels是由3個byte組成:R G*256 B*256*256

所以,如果要分別取出來只要將Pixels做三種運算:

int R:Pixels % 256

int G:Pixels / 256

再將上面的值 % 256

int B:Pixels / 256*256

請試試...

灰階的圖片是不是R=G=B壓~~

因為我要直接把灰階的BMP圖~~

做二值化的動作~~可以請大大教我ㄧ下ㄇ

b740813
一般會員


發表:0
回覆:3
積分:0
註冊:2006-08-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-08-24 13:44:21 IP:59.127.xxx.xxx 未訂閱

灰階的圖片是取 "Y" 值(亮度):Y Y*256 Y*256*256

所以在處理二值化的時候只需要用 Y 來做判斷:大於臨界值為黑(或白),反之。

以 128*128 的圖為例:

for(i = 0, i < 128, i ){

for(j = 0, j < 128, j ){

Y = Image1->Canvas->Pixels[i][j] % 256;

if(Y<128) Y = 255; //128為臨界值, 可自訂

//255為白色

else Y = 0; //0為黑色

Image2->Canvas->Pixels[i][j] = Y Y*256 Y*256*256;

}

}

如此便可將灰階(Image1)的圖做二值化處理顯示到Image2上了

請試試‧‧‧

nike880724
一般會員


發表:11
回覆:4
積分:3
註冊:2006-08-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-08-30 16:21:14 IP:163.17.xxx.xxx 未訂閱

謝謝大大~~我二值化已經跑出來ㄌ~~

可已再請教一個問題ㄇ~~

就是影像量化~~要怎ㄇ寫ㄋ

pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-09-08 15:24:21 IP:219.84.xxx.xxx 未訂閱


取RGB的值一般做法是用BIT運算,用*或%的話,效率會差很多

unsigned int color=...;

unsigned char r = color;

color >>=8;

unsigned char g = color;

color >>=8;

unsigned char b = color;

===================引 用 文 章===================

由於Pixels是由3個byte組成:R G*256 B*256*256

所以,如果要分別取出來只要將Pixels做三種運算:

int R:Pixels % 256

int G:Pixels / 256

再將上面的值 % 256

int B:Pixels / 256*256

請試試...

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