如何搜尋白色以外的面積 |
答題得分者是:johnpage
|
god12dog
一般會員 發表:14 回覆:3 積分:3 註冊:2007-12-14 發送簡訊給我 |
這是我在板上找的程式,他只會搜尋白色的面積,那如果今天我要找別的顏色面積那要如何做
[code cpp] int count=0; int Connect(Graphics::TBitmap * BMP, int x, int y) { count ; BMP->Canvas->Pixels[x][y] = clBlack; // 判斷 (x 1,y) if(BMP->Canvas->Pixels[x 1][y] == clWhite) { Connect(BMP, x 1, y); } // 判斷(x 1, y - 1) if(BMP->Canvas->Pixels[x 1][y - 1] == clWhite) { Connect(BMP, x 1, y - 1); } // 判斷 (x 1,y 1) if(BMP->Canvas->Pixels[x][y - 1] == clWhite) { Connect(BMP, x , y - 1); } // 判斷 (x,y-1) if(BMP->Canvas->Pixels[x-1][y - 1] == clWhite) { Connect(BMP, x-1, y - 1); } // 判斷 (x,y-1) if(BMP->Canvas->Pixels[x-1][y] == clWhite) { Connect(BMP, x-1, y); } // 判斷 (x-1,y) if(BMP->Canvas->Pixels[x - 1][y 1] == clWhite) { Connect(BMP, x - 1, y 1); } // 判斷 (x-1,y-1) if(BMP->Canvas->Pixels[x][y 1] == clWhite) { Connect(BMP, x, y 1); } // 判斷 (x 1,y) if(BMP->Canvas->Pixels[x 1][y 1] == clWhite) { Connect(BMP, x 1, y 1); } // 判斷 (x-1,y 1) if(BMP->Canvas->Pixels[x 1][y] == clWhite) { Connect(BMP, x 1, y); } return (count); } void __fastcall TForm1::Button10Click(TObject *Sender) { int j ; int c = 0; Graphics::TBitmap *BMP = new Graphics::TBitmap(); Byte *ptr=NULL; BMP->Assign(Image1->Picture->Bitmap);; for(int y = 0; y < BMP->Height; y ) { ptr = (Byte *) BMP->ScanLine[y]; for(int x = 0; x < BMP->Width; x ) { if(ptr[x*3]==255) { int cx= Connect(BMP, x, y); Memo1->Lines->Add(cx);// 顯示每次計算的結果(物件所佔的像素數) count=0; //歸0用 if (cx>=150 && cx<=500) c =1; //計算物件各數 (可用像素數cx來限制是否累計) //break; } } } ShowMessage(c); delete BMP; } [/code] |
johnpage
初階會員 發表:0 回覆:79 積分:40 註冊:2004-08-07 發送簡訊給我 |
|
god12dog
一般會員 發表:14 回覆:3 積分:3 註冊:2007-12-14 發送簡訊給我 |
|
johnpage
初階會員 發表:0 回覆:79 積分:40 註冊:2004-08-07 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |