關於影像labeling之問題 |
答題得分者是:gruffuddqo4
|
nike880724
一般會員 發表:11 回覆:4 積分:3 註冊:2006-08-16 發送簡訊給我 |
待測影像如左圖~想對白色的區域做labeling的處理~
並將其標註號碼~ 已下市我參考別人的程式碼~ 但是會出現右圖顯示的錯誤訊息~ 請各位高手幫我看依下怎麼改~ [code cpp] void __fastcall TMain::N8Click(TObject *Sender) { int label; Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap(); Bitmap1->Assign(Image1->Picture->Bitmap); Bitmap1->PixelFormat = pf24bit; Byte *ptr; for(int j=0;j<256;j ) { ptr = (Byte *) Bitmap1->ScanLine[j]; for(int i=0;i<256;i ) { if(ptr[i*3]==255) { label=label 1; Connect(Bitmap1,label,i,j); } } } Image1->Picture->Assign(Bitmap1); delete Bitmap1; } //------------------------------------------------------------------- int Connect(Graphics::TBitmap *Bitmap1,int label,int i,int j) { Bitmap1->Canvas->Pixels[i][j] = label; if (Bitmap1->Canvas->Pixels[i 1][j]==0) { Connect(Bitmap1,label,i 1,j); } if (Bitmap1->Canvas->Pixels[i 1][j-1] ==0) { Connect(Bitmap1,label,i 1,j-1); } if (Bitmap1->Canvas->Pixels[i][j-1] ==0) { Connect(Bitmap1,label,i ,j-1); } if (Bitmap1->Canvas->Pixels[i- 1][j] ==0) { Connect(Bitmap1,label,i -1,j); } if (Bitmap1->Canvas->Pixels[i- 1][j 1] ==0) { Connect(Bitmap1,label,i - 1,j 1); } if (Bitmap1->Canvas->Pixels[i][j 1] ==0) { Connect(Bitmap1,label,i,j 1); } if (Bitmap1->Canvas->Pixels[i 1][j 1] ==0) { Connect(Bitmap1,label,i 1,j 1); } if (Bitmap1->Canvas->Pixels[i 1][j] ==0) { Connect(Bitmap1,label,i 1,j); } if (Bitmap1->Canvas->Pixels[i- 1][j-1]==0) { Connect(Bitmap1,label,i - 1,j-1); } } //-------------------------------------------------------------------[/code] |
gruffuddqo4
一般會員 發表:1 回覆:2 積分:5 註冊:2007-06-29 發送簡訊給我 |
可能原因:local variable(like:Bitmap1=256*256*24Bytes )配置太大,造成stack overflow
編輯記錄
gruffuddqo4 重新編輯於 2007-10-12 16:58:44, 註解 無‧
|
tom071912
一般會員 發表:2 回覆:2 積分:0 註冊:2010-05-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |