線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:901
推到 Plurk!
推到 Facebook!

有關 'Stack overflow' 的問題

尚未結案
fu3751
一般會員


發表:16
回覆:10
積分:5
註冊:2004-04-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-18 21:39:34 IP:210.70.xxx.xxx 未訂閱
下列程式執行時 出現 'Stack overflow' 的訊息 若將陣列改 float 型態則不會出現上述訊息 請問這是什麼原因 請高手解答 void __fastcall TForm1::getlms1Click(TObject *Sender) { int i,j;    //int h=Image1->Picture->Bitmap->Height; //int w=Image1->Picture->Bitmap->Width; Graphics::TBitmap *Bmp1=new Graphics::TBitmap(); Bmp1->Assign(Image1->Picture->Bitmap); double r[240][180],g[240][180],b[240][180]; for(j=0;jHeight;j++) { for(i=0;iWidth;i++) { r[i][j]=((GetRValue(Bmp1->Canvas->Pixels[i][j]))/255); g[i][j]=((GetGValue(Bmp1->Canvas->Pixels[i][j]))/255); b[i][j]=((GetBValue(Bmp1->Canvas->Pixels[i][j]))/255); } } }
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-18 22:04:21 IP:218.168.xxx.xxx 未訂閱
您好: 相關討論參考看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29290 依您的應用,資料型態設定為Byte比較合適 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
fu3751
一般會員


發表:16
回覆:10
積分:5
註冊:2004-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-18 22:14:05 IP:210.70.xxx.xxx 未訂閱
因為後續我要作 R,G,B 轉 l,a,b 的運算 但是依下程式 都會出現 Stack overflow 的訊息    void __fastcall TForm1::getlms1Click(TObject *Sender) { int i,j;    Graphics::TBitmap *Bmp1=new Graphics::TBitmap(); Bmp1->Assign(Image1->Picture->Bitmap);    double r[240][180],g[240][180],b[240][180]; double l[240][180],m[240][180],s[240][180]; double L[240][180],M[240][180],S[240][180];    for(j=0;jHeight;j ) { for(i=0;iWidth;i ) { r[i][j]=((GetRValue(Bmp1->Canvas->Pixels[i][j]))/255); g[i][j]=((GetGValue(Bmp1->Canvas->Pixels[i][j]))/255); b[i][j]=((GetBValue(Bmp1->Canvas->Pixels[i][j]))/255); l[i][j]=(0.3811*r[i][j]) (0.5783*g[i][j]) (0.0402*b[i][j]); m[i][j]=(0.1967*r[i][j]) (0.7244*g[i][j]) (0.0782*b[i][j]); s[i][j]=(0.0241*r[i][j]) (0.1288*g[i][j]) (0.8444*b[i][j]); L[i][j]=log(l[i][j]); M[i][j]=log(m[i][j]); S[i][j]=log(s[i][j]); } } } 發表人 - fu3751 於 2004/08/18 22:16:08
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-18 22:38:35 IP:218.168.xxx.xxx 未訂閱
您好: 不知連結的文章您是否已經看過,我試過並沒有stack overflow的問題耶 p.s:應避免log0的情況    順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
fu3751
一般會員


發表:16
回覆:10
積分:5
註冊:2004-04-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-18 22:55:02 IP:210.70.xxx.xxx 未訂閱
版主 我把程式寄給您試試 使用open 將 factory.bmp 圖檔載入 然後執行 colorspace 底下的 getlms 謝謝
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-19 00:03:32 IP:219.132.xxx.xxx 未訂閱
請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54773 GetRValue(),GetGValue(),GetBValue(),傳回是byte 將double r[240][180],g[240][180],b[240][180]; double l[240][180],m[240][180],s[240][180]; double L[240][180],M[240][180],S[240][180]; 改成byte r[240][180],g[240][180],b[240][180]; byte l[240][180],m[240][180],s[240][180]; byte double L[240][180],M[240][180],S[240][180]; 試試看,請參考! Andy Chang
------
Andy Chang
fu3751
一般會員


發表:16
回覆:10
積分:5
註冊:2004-04-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-19 16:42:25 IP:210.70.xxx.xxx 未訂閱
將程式修正成上述模樣 執行後產生如下錯誤
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-19 17:10:39 IP:210.68.xxx.xxx 未訂閱
就說應避免log0的情況了壓
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-19 17:12:54 IP:219.132.xxx.xxx 未訂閱
引言: 將程式修正成上述模樣 執行後產生如下錯誤
對不起!仔細看了你程式應該是 將>>>>>>>>>>>>
------
Andy Chang
fu3751
一般會員


發表:16
回覆:10
積分:5
註冊:2004-04-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-19 20:03:33 IP:210.70.xxx.xxx 未訂閱
我把程式修正如下 至少不會出現錯誤訊息 不知還有需要修正的邏輯錯誤嗎? 感謝各位的指正 謝謝啦    void __fastcall TForm1::getlms1Click(TObject *Sender) { int i,j;    Graphics::TBitmap *Bmp1=new Graphics::TBitmap(); Bmp1->Assign(Image1->Picture->Bitmap); byte r[240][180],g[240][180],b[240][180]; static double l[240][180],m[240][180],s[240][180]; static double L[240][180],M[240][180],S[240][180]; for(j=0;jHeight;j ) { for(i=0;iWidth;i ) { r[i][j]=GetRValue(Bmp1->Canvas->Pixels[i][j]); g[i][j]=GetGValue(Bmp1->Canvas->Pixels[i][j]); b[i][j]=GetBValue(Bmp1->Canvas->Pixels[i][j]); l[i][j]=(0.3811*r[i][j]/255) (0.5783*g[i][j]/255) (0.0402*b[i][j]/255); m[i][j]=(0.1967*r[i][j]/255) (0.7244*g[i][j]/255) (0.0782*b[i][j]/255); s[i][j]=(0.0241*r[i][j]/255) (0.1288*g[i][j]/255) (0.8444*b[i][j]/255); if(l[i][j]!=0) L[i][j]=log(l[i][j]); else L[i][j]=0; if(m[i][j]!=0) M[i][j]=log(m[i][j]); else M[i][j]=0; if(s[i][j]!=0) S[i][j]=log(s[i][j]); else S[i][j]=0; } } }
系統時間:2024-05-21 1:17:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!