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

程式效率問題

尚未結案
fancelee
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-30 09:08:27 IP:202.181.xxx.xxx 未訂閱
 
void __fastcall TForm1::Timer6Timer(TObject *Sender)
{
.....
.....
vector >TempColorArray((mark4),vector(mark4));
vector >RColorArray((mark4),vector(mark4));
vector >GColorArray((mark4),vector(mark4));
vector >BColorArray((mark4),vector(mark4));
//vector >RGBArray((mark4),vector(mark4));
vectorTempRGBArray(((mark4)*(mark4)));
for(i=0;i<(mark4);i  )
  {
  for(j=0;j<(mark4);j  )
    {
    TempColorArray[i][j]=(PaintBox1->Canvas->Pixels[x][y]);
    RColorArray[i][j]=(char)TempColorArray[i][j];
    TempColorArray[i][j]>>=8;
    GColorArray[i][j]=(char)TempColorArray[i][j];
    TempColorArray[i][j]>>=8;
    BColorArray[i][j]=(char)TempColorArray[i][j];
      y;
    }
    x;
  }
int m=0;
for(i=0;i<(mark4);i  )
  {
  for(j=0;j<(mark4);j  )
    {
     TempRGBArray[m]=(int)RColorArray[i][j] 
                      (int)GColorArray[i][j] 
                      (int)BColorArray[i][j];
     m  ;        }
  }
sort(TempRGBArray.begin(),TempRGBArray.end());
container=TempRGBArray.capacity();
for(i=0;i<(container/4);i  )
{
totalmin  = TempRGBArray[i];
}
colormin=(totalmin/(container/4));
for(i=(container-1);i>((container-1)-(container/4));i--)
{
totalmax  = TempRGBArray[i];
}
colormax=(totalmax/(container/4));
ratio=(colormax/(colormin 1))*100;
CGauge4->Progress=ratio;
}
如上之程式碼 當Markmm,越大時 好像迴圈無法跑完所有的值 且我有五個這樣的迴圈 不知是否有增加效率的寫法 或變通的方法 或需要研讀哪方面之資料 請各位前輩 指點 謝謝
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-30 09:26:00 IP:210.68.xxx.xxx 未訂閱
您好:
 TempColorArray[i][j]=(PaintBox1->Canvas->Pixels[x][y]);    可將PaintBox1換成TImage 利用ScanLine的Function可提升非常多的速度
ScanLine的用法站上已有很多討論文章與程式碼供您參考    順心
 
        
fancelee
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-30 15:33:34 IP:202.181.xxx.xxx 未訂閱
版主您好    我有試著將PaintBox換成Image 但這樣就無法顯示出CCD所取出影像之每一點Pixel之RGB值 畫線也是一樣 我原來的程式做法 是延用於本站的一些文章    
 
1.使用VFW取像(Handle  為 Panel1)
2.於Panel1上放Panel2&PaintBox1
3.畫方框
4.取方框數值
5.運算取出之數值
不好意思 材初次操刀 很多相關用法及經驗都不足 甚至答案就在眼前也不知道 請版主及各位先進見諒 亦請指導此一問題
fancelee
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-07 10:10:30 IP:210.202.xxx.xxx 未訂閱
SORRY 終於在 ID=38259 中找到 版主大人所提的方法 將PaintBox1換成TImage 謝謝版大
jjkozi
一般會員


發表:0
回覆:1
積分:0
註冊:2004-06-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-13 13:25:59 IP:60.250.xxx.xxx 訂閱
不好意思
妳說終於在 ID=38259 中找到
版主大人所提的方法
將PaintBox1換成TImage
"ID=38259 "要如何才能搜尋到??
煩請指點
系統時間:2024-05-02 22:30:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!