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

請問關於程式指標運用

答題得分者是:GeorgeKu
canrain
一般會員


發表:5
回覆:5
積分:2
註冊:2004-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-19 01:30:18 IP:220.132.xxx.xxx 未訂閱
小弟寫一個程式如下
int T1 = StrToInt(Edit1->Text);
int T2 = StrToInt(Edit2->Text);
int a=0,b=0,c=0,d=0,f=0,g=0;
int w=(Image1->Width);
int h=(Image1->Height);
int w1=((w/2)-T1/2);
int w2=((w/2) T1/2);
int h1=((h/2)-T2/2);
int h2=((h/2) T2/2);
         for(short j=h1;jCanvas->Pixels[i][j]);
             b = GetRValue(Image1->Canvas->Pixels[i 1][j]);
             d = GetRValue(Image1->Canvas->Pixels[i][j 1]);
             c=(abs(a-b));
             f=(abs(a-d));
            g=g c f;
            }
  ListBox1->Items->Add(g);
程式目的是計算影像中像每個像素點與右邊跟下面兩像素點的差異總和 改成指標以加速運算 但是因為程式功力太低而失敗 請問各位前輩該如何修改才對呢? 謝謝 改後程式如下
int T1 = StrToInt(Edit1->Text);
int T2 = StrToInt(Edit2->Text);
int a=0,b=0,c=0,d=0,f=0,g=0;
int w=(Image1->Width);
int h=(Image1->Height);
int w1=((w/2)-T1/2);
int w2=((w/2) T1/2);
int h1=((h/2)-T2/2);
int h2=((h/2) T2/2);
         for(register short j=h1;jPicture->Bitmap->ScanLine[j];
         for(register short i=w1;iPicture->Bitmap->ScanLine[i];
             Byte *row = point_row 3*i;
             Byte *row1 = point_row 3*(i 1);
             Byte *row2 = point_row2 3*(j 1);
             c=(abs(row[2]-row1[2]));
             f=(abs(row[2]-row2[2]));
             g=g c f;
             }
         }
  ListBox1->Items->Add(g);
發表人 - canrain 於 2005/05/19 01:31:17
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-19 09:42:58 IP:61.228.xxx.xxx 未訂閱
canrain,    修改成下面的code看看
    for(int j=h1;jPicture->Bitmap->ScanLine[j];
            Byte *point_row2= (Byte*)Image1->Picture->Bitmap->ScanLine[j 1];
            for(int i=w1;i    **你這bitmap因該是32bit顏色吧,我的印像中顏色因該是0x00BBGGRR,所以你取紅色值的話,因該取第一個BYTE吧,也就是row[0],row1[0],row2[0].    發表人 - georgeku 於 2005/05/19  10:09:11    發表人 - georgeku 於 2005/05/19  10:13:29
        
canrain
一般會員


發表:5
回覆:5
積分:2
註冊:2004-08-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-19 18:40:29 IP:220.132.xxx.xxx 未訂閱
感謝前輩回應 經過小弟測試過後,終於發現一個嚴重問題,小弟在程式開頭加上  Image1->Picture->Bitmap->PixelFormat = pf24bit; 這一行 在加上前輩修改後的程式就行了 小弟是用24bit的圖,所以才用3進位的 由衷感謝 另外程式碼我還改了點小地方 試很久才看出來 謝謝前輩回應
    for(int j=h1;jPicture->Bitmap->ScanLine[j];
            Byte *point_row2= (Byte*)Image1->Picture->Bitmap->ScanLine[j 1];
            for(int i=w1;i3*i;
                    Byte *row1 = point_row 3*(i 1);
                    Byte *row2 = point_row2 3*i;
                    c=(abs(row[2]-row1[2]));
                    f=(abs(row[2]-row2[2]));
                    g=g c f;
                    }
                    }
,,, 發表人 - canrain 於 2005/05/19 18:42:13
系統時間:2024-06-01 23:49:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!