尋邊~找出座標 |
|
rabbit78585
一般會員 發表:11 回覆:22 積分:6 註冊:2006-08-22 發送簡訊給我 |
圖為640X480
我參考大家程式所改的~ 原圖http://www.wretch.cc/album/show.php?i=rabbit78585&b=1&f=1412425917&p=2 由下列程式碼尋邊標記後塗藍色 http://www.wretch.cc/album/show.php?i=rabbit78585&b=1&f=1412425916&p=1 而是把全部白色變藍色 我想請教各位大大是要怎麼改下列程式~只尋白色外圍標記成藍色如圖一整圈 如圖http://www.wretch.cc/album/show.php?i=rabbit78585&b=1&f=1412425918&p=3 不好意思有點不太清楚(白色外圍有一圈藍色) 謝謝~ 程式碼: void __fastcall TForm1::Button8Click(TObject *Sender) { Image2->Picture = NULL; Memo1->Clear(); Byte *ptr = NULL; int i,j; Graphics::TBitmap *TempBitmap,*OrgBitmap; TempBitmap = Image1->Picture->Bitmap; TempBitmap->PixelFormat = pf24bit;// (TPixelFormat)6;//pf8bit; Image1->Canvas->Brush->Style = bsClear; Image1->Canvas->Pen->Color = clAqua; for(j=0;j { ptr = (Byte *)TempBitmap->ScanLine[j]; for(i=0;i { if (ptr[i*3] == 255) { CCL(TempBitmap, i, j); } } } //delete TempBitmap; } //--------------------------------------------------------------------------- void __fastcall TForm1::CCL(Graphics::TBitmap *TempBitmap, int i, int j) { SetPixel(TempBitmap->Canvas->Handle, i, j, clBlack); Image1->Canvas->Pixels[i][j] = clBlue; Memo1->Lines->Add("X:" IntToStr(i) " Y: " IntToStr(j)); Application->ProcessMessages(); if (TempBitmap->Canvas->Pixels[i 1][j]==clWhite) //向右走 CCL(TempBitmap, i 1, j); if (TempBitmap->Canvas->Pixels[i][j 1]==clWhite) //向下走 CCL(TempBitmap, i, j 1); if (TempBitmap->Canvas->Pixels[i-1][j]==clWhite) //向左走 CCL(TempBitmap, i-1, j); if (TempBitmap->Canvas->Pixels[i][j-1]==clWhite) //向上走 CCL(TempBitmap, i, j-1); } |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
johnpage
初階會員 發表:0 回覆:79 積分:40 註冊:2004-08-07 發送簡訊給我 |
|
rabbit78585
一般會員 發表:11 回覆:22 積分:6 註冊:2006-08-22 發送簡訊給我 |
好像誤會我的意思~
圖是640X480~我把白點找出來變成藍色(用意是確定那點有找到)~ 而找出的白點座標把他傳到Memo1.而知道白點(X.Y).座標~ 如下列: 1=>白色 0=>黑色 <----------- ---- 長共有640點像素----------------> 000000001111000000000111000......00000 00000000111110000000011111000.........00 . 寬共有480點像素 . 00000000111100000000000111100000...0 以上為640X480的二值化後的圖形~但以利用上面程式已經把所有白色像素點1..已經找到也把座標傳到Memo1 但想請教各位大大!怎麼改寫程式找到最左跟最右如下面(紅色1)..由左往右掃遇到第一個1把座標傳到Memo1 ,而跳下一列再掃~ 由右往左掃遇到第一個1把座標傳到Memo1 ,而跳下一列再掃~ 00000000011111000000011111000...........0=>640像素點 謝謝各位大大! |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
rabbit78585
一般會員 發表:11 回覆:22 積分:6 註冊:2006-08-22 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
rabbit78585
一般會員 發表:11 回覆:22 積分:6 註冊:2006-08-22 發送簡訊給我 |
先謝謝 johnpage 與 暗黑破壞神 這兩位大大
johnpage 我知道你說我的的問題出在哪 圖ㄈ形狀~用上面程式下去標記白色點~會把全部白色點都標出來與記錄座標 而用我想改的程式下去標記只能標記到某部份 PS:( )是只圖形 如(由左往右掃白色點) 只能掃到與標記 ( l ) 而無法掃到標記到 ( 二 ) (由右往左掃白色點)也只能掃到與標記( l ) 跟 ( : ) 也無法掃到標記到 ( 二 ) 這樣好了 ( 二 ) 這就不標記了 只要由左向右 與 由右向左 掃描出來跟紀錄座標就好 暗黑破壞神 我現在程式只是初步~看到白點就全部掃出來與標記跟紀錄座標 但因 johnpage 的提示用左向右 或 右向左 的程式只能標記某部份~ 而現在我想說就標記某部份就好!請教各位大大怎麼改寫!謝謝 |
johnpage
初階會員 發表:0 回覆:79 積分:40 註冊:2004-08-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |