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

關於擷取panel畫面

尚未結案
soin
一般會員


發表:1
回覆:0
積分:0
註冊:2005-03-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-18 18:55:02 IP:163.18.xxx.xxx 未訂閱
程式要求:      將CCD畫面顯示在panel上,再按下按鈕後,一開始會連續擷取21張畫面到矩陣 之後每讀取一張處理一次,為了將panel畫面擷取到某一矩陣,我使用下列程式處理    void __fastcall TForm1::Button3Click(TObject *Sender) {   for(i=0;i<21;i ) { ..... ..... capSetCallbackOnFrame(hCapWnd,&fpVideoCallback); ..... ..... } } //-------------------------------------------------------------------- LRESULT CALLBACK fpVideoCallback( HWND hwnd, LPVIDEOHDR lpvhdr ) { unsigned char *a=(unsigned char *)lpvhdr->lpData; BYTE R,G,B,Y; FILE *fpdata=fopen("data.txt","a"); for (int j=288;j>=0;j--) { for (int i=0;i<352;i ) { R=*a ; G=*a ; B=*a ; Y=0.299*R 0.587*G 0.114*B; // Form1->Image1->Canvas->Pixels[i][j]=RGB(Y,Y,Y); imagetemp[i!][i][j]=Y; } } capSetCallbackOnFrame(hCapWnd,NULL); } 上面程式可以將擷取數值存到矩陣,但是會發生已經開始處理但是畫面還沒擷取完的情況 後來改用版上KENI_LIN的方法http://delphi.ktop.com.tw/topic.php?TOPIC_ID=62758 可以較快速的擷取畫面,但其格式如何計算成灰階 在者因為也是用callbackonframe的方式,會不會再出現類似之前的問題? 因為好像執行capSetCallbackOnFrame()後,馬上就會往下執行並不會等擷取完? 那可以設定擷取完畫面後,程式在往下執行嗎? 之前都寫C,現在用BCB有很多觀念還不太懂,所以上來請求幫忙,謝謝^^ 發表人 - soin 於 2005/04/18 18:58:43
fnk
高階會員


發表:40
回覆:149
積分:102
註冊:2004-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-19 11:29:49 IP:140.124.xxx.xxx 未訂閱
hihi... 據我所知..CallbackOnFrame應該是抓完一張才會再抓下一張... 若你的情形不是如此... 可以用個Flag來做為判斷...    
CallbackOnFrame()
  {
  if (GrabFlag)
    {
    GrabFlag = false;  // 預防還沒處理好..又有下一張進來...
    
    // 放入你的處理程式...        GrabFlag = true;   // 處理完畢..還原設定..以便可以處理下一張影像.
    }
  }
另外...之前有寫一個簡單的程式.. 你可以參考一下... http://delphi.ktop.com.tw/topic.php?TOPIC_ID=69022 =========== 有興趣,就能進步 ===========
系統時間:2024-05-19 15:10:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!