Labeling Algorithm |
尚未結案
|
mitao
一般會員 ![]() ![]() 發表:34 回覆:5 積分:7 註冊:2003-08-14 發送簡訊給我 |
大家好:
我的目的是要把左圖5個白色部分用不同的顏色表示,也就是做標記...
有參考過站上的程式碼.不過結果卻是右圖
Graphics::TBitmap *OR = new Graphics::TBitmap(); OR->Assign(Image1->Picture->Bitmap); Byte *ptr; for(int j=0;j |
richtop
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
mitao
一般會員 ![]() ![]() 發表:34 回覆:5 積分:7 註冊:2003-08-14 發送簡訊給我 |
|
richtop
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
mitao 您好: 試著將下列相同敘述,
bmp->Canvas->Pixels[x+ 1][y];
改成
GetRValue( bmp->Canvas->Pixels[x+ 1][y] ) ==255 // 所以填入的顏色,R分量不可以是255。
因為bmp->Canvas->Pixels[x+ 1][y]是傳回TColor,不是單純的int。
GetXValue(.),其中X可以是R、G或B,分別表示取出的RGB分量。 還有先定義一個顏色陣列,ex. myColor,再利用label來選顏色,而不要只填入label (int)
TColor myColor[]={(TColor) RGB(125, 0, 0), (TColor) RGB(254, 0, 0), (TColor) RGB( 0,254, 0), (TColor) RGB( 0, 0,254), (TColor) RGB(254,254, 0), (TColor) RGB(254, 0,254), (TColor) RGB( 0,254,254) };bmp->Canvas->Pixels[x][y]=myColor[label]; 另外,搜尋有可能會跑出邊界,也要先判斷是否跑出邊界,再呼叫Connect(.)。 bool checkBoundary(int x, int y) { if ( x<0 || x>=Form1->Image1->Width || y<0 || y>=Form1->Image1->Height ) return false; else return true; } 舉例如下: if ( checkBoundary(x+1, y) ) // 八個方向都要,先判斷再呼叫Connect(.) { if (GetRValue(bmp->Canvas->Pixels[x+ 1][y]) ==255) { Connect(bmp,label, x + 1, y); } } |
Maxie
一般會員 ![]() ![]() 發表:3 回覆:3 積分:1 註冊:2004-06-10 發送簡訊給我 |
|
mitao
一般會員 ![]() ![]() 發表:34 回覆:5 積分:7 註冊:2003-08-14 發送簡訊給我 |
|
richtop
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
moore5221
一般會員 ![]() ![]() 發表:0 回覆:1 積分:0 註冊:2005-09-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |