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

clipboard 中bmp 的格式問題

答題得分者是:yannyann
mkchuang
一般會員


發表:1
回覆:10
積分:7
註冊:2002-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-11 01:55:48 IP:163.28.xxx.xxx 未訂閱
小弟我將CCD所顯示的image cpoy一份到clipboard裡面去, 然後new 一個TBitmap 準備要處理所擷取的畫面 所擷取的畫面顯示在TImage上,或是paintbox都沒問題 但是要來處理就有問題了 後來找到解決辦法是在處理之前必須將TBitmap強制轉型成24bit.. 雖然問題解決了,但是希望可以不浪費時間來做這轉型動作 我用google查不到有關的資料.... 不曉得有無大大可以幫我解決這疑惑的..先謝了 程式碼如下: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>>>>
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-11 14:18:45 IP:140.135.xxx.xxx 未訂閱
mkchuang您好:  
引言:後來找到解決辦法是在處理之前必須將TBitmap強制轉型成24bit.. 雖然問題解決了,但是希望可以不浪費時間來做這轉型動作
我不太了解您所說的[浪費時間]意思指的是什麼耶 如您所說加入> >< > 順心
mkchuang
一般會員


發表:1
回覆:10
積分:7
註冊:2002-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-11 20:17:08 IP:163.28.xxx.xxx 未訂閱
引言: mkchuang您好:
引言:後來找到解決辦法是在處理之前必須將TBitmap強制轉型成24bit.. 雖然問題解決了,但是希望可以不浪費時間來做這轉型動作
我不太了解您所說的[浪費時間]意思指的是什麼耶 如您所說加入> >< > 順心 < face="Verdana, Arial, Helvetica"> taishyang你好, 我利用下面三行指令來得到處理所花費的時間 BTime=timeGetTime(); tbmp->PixelFormat=pf24bit; Label1->Caption = IntToStr(timeGetTime()-BTime) " msec."; 然後得到強制轉型一張640x480大小的影像為24bit需要約80ms的時間 我目前程式整個處理一張640X480影像的時間約200ms 所以此步驟花費了我大約40%的運算時間 因為要做real time的影像處理,所以希望所花的時間越少越好 所以我希望能夠不需要做強制轉型為24bit的動作 或者說有其他運算時間不需要那麼多的方法 這樣就可以減少處理影像的時間了。 發表人 - mkchuang 於 2003/03/11 20:29:59
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-12 14:51:52 IP:61.218.xxx.xxx 未訂閱
我的做法 1 cpature Video Format 用 16 色 2 用組合語言 來寫
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-15 05:14:56 IP:163.28.xxx.xxx 未訂閱
我覺得可以避開SaveToClip這條路 參考 http://delphi.ktop.com.tw/topic.php?topic_id=22263
mkchuang
一般會員


發表:1
回覆:10
積分:7
註冊:2002-12-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-18 02:18:37 IP:163.28.xxx.xxx 未訂閱
引言: 我覺得可以避開SaveToClip這條路 參考 http://delphi.ktop.com.tw/topic.php?topic_id=22263
嗯嗯,果然有用。 本來處理一張320X240 24影像要60ms 現在降到45ms嘍~~
jerichowang
一般會員


發表:17
回覆:27
積分:8
註冊:2005-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-13 21:34:48 IP:140.114.xxx.xxx 未訂閱
各位大家好 我也和原PO有相同問題 我把即時影像show在image1上面,在此存取 如下  
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    Timer1->Enabled=false;
    capGrabFrameNoStop(hCapWnd);
    capEditCopy(hCapWnd);
    if(Clipboard()->HasFormat(CF_DIB))
        Image1->Picture->Bitmap->Assign(Clipboard());
         Byte *ptr;
          Bitmap1->PixelFormat=pf24bit; //就是這行            for(int i=0;iHeight;i  )
         {
          ptr = (Byte *)Bitmap1->ScanLine[i];
             for(int j=0;jWidth;j  )
             {
             r=ptr[3*j];
             g=ptr[3*j 1];
             b=ptr[3*j 2];
             gray=(r g b)/3;
             ptr[j*3]=(Byte)gray;
             ptr[j*3 1]=(Byte)gray;
             ptr[j*3 2]=(Byte)gray;
             }
         }
             Image2->Picture->Bitmap->Assign(Bitmap1) ;
}
             Timer1->Enabled=true;
}
 
 
Bitmap1->PixelFormat=pf24bit; 不知為何要多這一行??否則根本無法再處理下去?? 我希望能把抓取到Image1上的圖檔轉成256色的單調BMP檔 也就是說,我目前這樣的做法是存成im(:,:,3) //matlab圖檔語法 希望能直接轉成im(:,:) , 我再matlab上把BCB輸出的圖檔看了一下 im(:,:,1) ,im(:,:,2),im(:,:,3)的灰階值都一樣 謝謝各位
系統時間:2024-03-29 14:10:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!