全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1274
推到 Plurk!
推到 Facebook!

[影像處理]程式有bug??

 
parano
一般會員


發表:14
回覆:6
積分:4
註冊:2007-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-27 13:14:41 IP:140.114.xxx.xxx 訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Open1Click(TObject *Sender) { if(OpenPictureDialog1->Execute()) { Image1->AutoSize=true; Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Close1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Save1Click(TObject *Sender) { SavePictureDialog1->DefaultExt=".bmp"; if(SavePictureDialog1->Execute()) { Image1->Picture->SaveToFile(SavePictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Graphics::TBitmap *Bmp = new Graphics::TBitmap(); int r,g,b; int gray; Byte *ptr; Bmp->PixelFormat=pf24bit; Bmp->Assign(Image1->Picture->Bitmap); for(int y=0;yHeight;y ) { ptr=(Byte*)Bmp->ScanLine[y]; for(int x=0;xWidth;x ) { b=ptr[x*3]; g=ptr[x*3 1]; r=ptr[x*3 2]; gray= 0.299*r 0.587*g 0.114*b; ptr[x*3]=gray; ptr[x*3 1]=gray; ptr[x*3 2]=gray; } Image2->Picture->Assign(Bmp); delete Bmp; } } </textarea>


在執行後都會有執行錯誤的顯示,然後就跳到CPU視窗,是什麼問題呢?? 請教各位大大我的程式哪裡有問題??
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-27 13:34:25 IP:59.124.xxx.xxx 未訂閱
PO程式碼的方式請參考版規說明
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=84836

請修改,謝謝您的配合
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-27 20:20:40 IP:220.131.xxx.xxx 訂閱
通常用到 scanline 時最容易出這個問題。
你要仔細去看看你的”邊際值”是否正確。
也就是不能超過陣列的範圍。
我不幫你追程式。你自己慢慢追才會成長。
parano
一般會員


發表:14
回覆:6
積分:4
註冊:2007-02-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-27 22:32:57 IP:140.114.xxx.xxx 訂閱
由Bmp->PixelFormat=pf24bit-------------------->改成Bmp->PixelFormat=pf8bit之後
結果還是一樣,陣列大小(邊際值)如何得知??
又為何ScanLine不能裝取或任意設定像素資料??
nibabakaho
一般會員


發表:13
回覆:6
積分:13
註冊:2006-08-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-27 22:59:47 IP:125.229.xxx.xxx 訂閱
Image2->Picture->Assign(Bmp);
delete Bmp;

這兩行你放在迴圈裏面幹麻 @@"
把他抓到外面放應該就OK拉

parano
一般會員


發表:14
回覆:6
積分:4
註冊:2007-02-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-28 11:57:17 IP:140.114.xxx.xxx 訂閱
對喔~~~沒仔細看~~~XD
感謝大大的提醒~~^^~~
系統時間:2024-05-06 2:39:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!