[BCB問題]如何在二值化圖找像素 |
尚未結案
|
cwj0123
一般會員 發表:10 回覆:5 積分:3 註冊:2004-06-13 發送簡訊給我 |
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
cwj0123
一般會員 發表:10 回覆:5 積分:3 註冊:2004-06-13 發送簡訊給我 |
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
請再參考一次討論區http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55107
下面這一個程式,就可以顯示出座標及RGB的值
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TColor a = Image1->Canvas->Pixels[X][Y];
Label6->Caption = X; //X座標值,顯示在Label6
Label7->Caption = Y; //Y座標值,顯示在Label7
unsigned char b;
b = char(a);
Label8->Caption = int(b); //R值,顯示在Label8
a >>= 8;
b = char(a);
Label9->Caption = int(b); //G值,顯示在Label9
a >>= 8;
b = char(a);
Label10->Caption = int(b); //R值,顯示在Label10
}
所以使用這個程式前,就要建立好Label6~10的物件(如果你是初學者,請參考C++Builder的教科書)
//------------------------------------------------------------------- Pixels本身是一個0~255像素資料,所以一般我們做顏色辨識時,需將RGB做變量處理,假設紅色的變化量在000000FF位址,綠色要往左移動8bit變為0000FF00,藍色又要左移8bit為00FF0000,所以如果想把R,G,B參數抓出來,可參考以下程式: void __fastcall TForm1::Button2Click(TObject *Sender)
{
int X1,Y1;
X1= StrToInt(Edit1->Text);
Y1= StrToInt(Edit2->Text);
TColor a = Image1->Canvas->Pixels[X1][Y1];
unsigned char R,G,B;
R = char(a);
Label11->Caption = int(R); //R值變量,存放在int(R)
a >>= 8;
G = char(a);
Label12->Caption = int(G); //G值變量,存放在int(G)
a >>= 8;
B = char(a);
Label13->Caption = int(B); //B值變量,存放在int(B) if(int(R) > 254)
{
ShowMessage("紅色");
}
if(int(G) > 254)
{
ShowMessage("綠色");
}
if(int(B) > 254)
{
ShowMessage("藍色");
}
else
{
ShowMessage("不在辨識範圍內");
}
} 當然也可以判斷其它顏色,如黃色的R=255.G=255.B=0,判斷式改成
if(int(R) > 254 && int(G)>254)
{
ShowMessage("黃色");
}
所以不同的顏色,是由不同的三色原R,G,B(紅,綠,藍)組合而成的
------
Keni Lin |
chuanghs
一般會員 發表:7 回覆:9 積分:3 註冊:2004-08-07 發送簡訊給我 |
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
keikojason
初階會員 發表:37 回覆:63 積分:45 註冊:2004-05-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |