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

請教這錯誤訊息

尚未結案
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-10 16:15:40 IP:59.104.xxx.xxx 未訂閱
請問一下 這錯誤訊息是神麼意思啊    我是做cdd擷取影像後 作影像處理 在做 對比時 就會出現 若我把cdd停止 就不會 可以請教各位大大嗎
sew
一般會員


發表:2
回覆:54
積分:21
註冊:2003-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-10 18:36:45 IP:220.136.xxx.xxx 未訂閱
------
加油!
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-11 21:58:43 IP:211.74.xxx.xxx 未訂閱
還是不行ㄝ 我有把程式上載ㄌ 可以麻煩您試試看嗎 發表人 - mauricechen 於 2005/04/11 22:00:52
sew
一般會員


發表:2
回覆:54
積分:21
註冊:2003-08-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-12 22:21:17 IP:61.228.xxx.xxx 未訂閱
怎麼我跑就不會.. 可以po一下你的動作過程嗎.. 加油!
------
加油!
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-13 00:26:52 IP:211.74.xxx.xxx 未訂閱
恩~ 說清楚一點好了 可能得先接個視訊 之後截取畫面後 執行對比 移動捲軸 才會出現 但如果沒接 視訊就不會 所以....再麻煩囉....謝謝
sew
一般會員


發表:2
回覆:54
積分:21
註冊:2003-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-13 23:05:58 IP:220.136.xxx.xxx 未訂閱
我沒接ccd時也會產生錯誤說..:P 您的問題出在您在動卷軸時 同一個y值做了二次scanline 所以第二次scanline時,會產生overrange 而image只有左邊一部份有變化是因為您的width只有考慮單色 但scanline會抓rgb進來,所以會產生這樣的結果 所以您可能需要考慮整個tptr,ptr的大小 加油!
------
加油!
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-13 23:59:41 IP:211.74.xxx.xxx 未訂閱
不好意思 不太懂 ThresholdDlg 物件 是用來顯示暫存畫面 所以會掃兩次 你可PO你更改ㄉ方式嗎 我是初學者啦
poaivy
中階會員


發表:40
回覆:78
積分:53
註冊:2004-08-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-14 00:58:34 IP:140.117.xxx.xxx 未訂閱
妳好我看了你的程式後做了以下修改
int Threshold;
Graphics::TBitmap *TheBitmap,*TempBitmap;
Byte *ptr,*tptr;
    TheBitmap=Image1->Picture->Bitmap;
    TheBitmap->PixelFormat = pf32bit;
  //  TempBitmap=Form1->OrgBitmap;
    TempBitmap=new  Graphics::TBitmap();
    TempBitmap->Width= TheBitmap->Width;
    TempBitmap->Height= TheBitmap->Height;
    TempBitmap->PixelFormat = pf32bit;
//------------------
    Threshold=(int)ScrollBar1->Position;    //-------------------執行 Thresholding-----------------------------------
  for (int y=0; y < TheBitmap->Height; y  )
   {
    tptr = (Byte*)TheBitmap->ScanLine[y];
    ptr = (Byte*)TempBitmap->ScanLine[y];
    for (int x=0; x < TheBitmap->Width; x  )
     {
      if (tptr[x*4] < Threshold) ptr[x*4]=ptr[x*4 1]=ptr[x*4 2]=ptr[x*4 3]=0;
      else ptr[x*4]=ptr[x*4 1]=ptr[x*4 2]=ptr[x*4 3]=255;
     }
   }
   Image2->Picture->Assign(TempBitmap);
  delete TempBitmap;
首先再FORM上放置一個ScrollBar以及兩個image在第一張上面先讀進來一張圖片,可以藉由ScrollBar改變Threshold的值。不知道您是否需要這種功能? 做些許修改即可達到你所需要的結果。 回答不好請多多包含!!
sew
一般會員


發表:2
回覆:54
積分:21
註冊:2003-08-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-14 01:49:43 IP:61.228.xxx.xxx 未訂閱
哈..來不及了..:P 您的 TempBitmap->Width= 200 TheBitmap->Width=288; TempBitmap->Height=200 TheBitmap->Height=352; 使scanline時會overrange 加油!
------
加油!
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-15 23:30:27 IP:211.74.xxx.xxx 未訂閱
poaivy 大大 我有寫了 ScrollBar 再Dialog視窗中 可是我依你的改還是不行ㄝ 傷腦筋 sew 大大 TempBitmap->Width= 200 TheBitmap->Width=288; TempBitmap->Height=200 TheBitmap->Height=352; 我有這樣寫嗎....找不到ㄝ 可以再告知我嗎 還是謝謝您們的回應 努力中........
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-04-16 03:14:54 IP:211.74.xxx.xxx 未訂閱
ㄝ~ 我發覺好像是我擷取影像的關係 if(Clipboard()->HasFormat(CF_DIB)) { Image1->Picture->Bitmap->Assign(Clipboard()); } 有沒有其他寫法啊
sew
一般會員


發表:2
回覆:54
積分:21
註冊:2003-08-25

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-04-16 12:29:29 IP:61.228.xxx.xxx 未訂閱
TempBitmap->Width= 200 TheBitmap->Width=288; TempBitmap->Height=200 TheBitmap->Height=352; 因為您的TempBitmap->Width是等於Image1->Width 其中Image1->Width與Image1->Height是在物件中設定的 雖然你沒有寫出來,但是您在設定物件時bcb就會幫您寫進去了 加油! 發表人 - sew 於 2005/04/16 12:44:33
------
加油!
sew
一般會員


發表:2
回覆:54
積分:21
註冊:2003-08-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-04-16 12:57:24 IP:61.228.xxx.xxx 未訂閱
參考一下吧
 //-------------------------------------------------------------------
void __fastcall TThresholdDlg::ScrollBar1Change(TObject *Sender)
{
int Threshold;
Graphics::TBitmap *TheBitmap,*TempBitmap;
Byte *ptr,*tptr;        ThresholdDlg->Image1->Height=Form1->Image1->Height;
    ThresholdDlg->Image1->Width=Form1->Image1->Width;
    TheBitmap=Image1->Picture->Bitmap;
    TheBitmap->PixelFormat = pf32bit;
    TempBitmap=Form1->Image1->Picture->Bitmap;
    TempBitmap->PixelFormat = pf32bit;    //------------------
    Threshold=(int)ScrollBar1->Position;    //-------------------執行 Thresholding-----------------------------------
  for (int y=0; y < TheBitmap->Height; y  )
   {
    ptr = (Byte*)TheBitmap->ScanLine[y];
    tptr= (Byte*)TempBitmap->ScanLine[y];
    for (int x=0; x < TheBitmap->Width*4; x  )
     {
      if (tptr[x] < Threshold) ptr[x]=0;
      else ptr[x]=255;
     }
   }
//-------------------顯示圖像---------------------------------------      Repaint();
//---------------------------------------------------------    } 
加油!
------
加油!
mauricechen
一般會員


發表:22
回覆:8
積分:6
註冊:2005-02-17

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-04-26 22:13:01 IP:211.74.xxx.xxx 未訂閱
果然可以ㄝ 謝謝sew大大 和其他 大大的幫忙 謝謝
系統時間:2024-05-13 19:57:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!