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

使用TvideoCapture元件擷取ccd的問題

尚未結案
988078
一般會員


發表:23
回覆:15
積分:7
註冊:2005-03-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-12 17:05:47 IP:203.68.xxx.xxx 未訂閱
請教各位前輩~~ 我現在安裝好TVideoCapture元件~ 也可以擷取兩個ccd了~ 不過我現在想要把視訊裝置寫在程式裡面~ 也就是執行時不用手動選擇視訊裝置可以直接秀出來~ 煩請前輩指教該怎麼寫? 謝謝~~ 高高屋海苔
------
高高屋海苔
poaivy
中階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-13 01:13:00 IP:140.117.xxx.xxx 未訂閱
//-------------一開機就執行
    config=new TGraphConfig();
      TStringList* s;
      TListBox *bb=new TListBox(this);
      bb->Parent=Form1; bb->Visible=false;
  s = GetVideoDevicesList(true);
  try {
  if(s->Count==0){ShowMessage("no camera");return;}
    bb->Items->Assign(s);
   Edit1->Text=(bb->Items->Strings[0] );
  }
  __finally {
    delete s;
    delete bb;
  }
      config->WantPreview = true;
      config->WantCapture = true;
      config->WantBitmaps = true;
      config->WantDVAudio = false;
      config->DoPreallocFile = false;
      config->UseTempFile = false;
      config->WantAudio = false;
      config->PreallocFileSize = 1;
     // config->CaptureFileName = Form2->feCaptureFile->Text;
     //  config->TempCaptureFileName = Form2->feTempFile->Text;
      config->PixelFormat= pf24bit;
      config->VCapSource =Edit1->Text;       if (!Form1->cap->Init()) {
    ShowMessage("Can't init capture!");
    Application->Terminate();
  };      Form1->cap->RestoreGraph(config);
放在FormCreate裡面 試試看吧!!先拉一個EDIT元件去看所選的裝置 有問題在指教
988078
一般會員


發表:23
回覆:15
積分:7
註冊:2005-03-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-13 09:08:57 IP:203.68.xxx.xxx 未訂閱
謝謝你的回覆~~ 那我現在要擷取兩隻ccd的話ㄋ? 我剛試了兩支ccd~但只抓到一各裝置=.= 高高屋海苔
------
高高屋海苔
poaivy
中階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-13 09:27:57 IP:140.117.xxx.xxx 未訂閱
你去看一下這行Edit1->Text=(bb->Items->Strings[0] ); 改成Edit1->Text=(bb->Items->Strings[1] ); 去看看會不會抓到第二支的攝影機 再以此類推
988078
一般會員


發表:23
回覆:15
積分:7
註冊:2005-03-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-13 22:04:57 IP:203.68.xxx.xxx 未訂閱
已經可以抓到兩支ccd的裝置了 不過我現在第一隻是Orite 1.3M PCCAM (MC1300) 第二支是Logitech QuickCam Express 當我要擷取第一隻ccd的時候會出現延遲畫面ㄉ現象 第二支Logitech的ccd就不會 請問要怎麼處理? 高高屋海苔
------
高高屋海苔
poaivy
中階會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-13 23:15:48 IP:140.117.xxx.xxx 未訂閱
你還記得看過這篇文章嗎?? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54959 其實最好別用兩支都是USB的 因為我也遇過同樣問題"資源頻寬不夠" 如果你可以想出更好的方法解決的話^^ 也請告知我^^
988078
一般會員


發表:23
回覆:15
積分:7
註冊:2005-03-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-14 12:40:02 IP:203.68.xxx.xxx 未訂閱
謝謝你^^ 還在研究~~ 那請問~~ 我把之前用vfw擷取部份改成用TVideocapture來做~ 請問以下是哪裡出了問題? [C Error] Unit1.cpp(12): E2209 Unable to open include file 'GraphConfig.h' [C Error] Unit1.cpp(331): E2451 Undefined symbol 'config' [C Error] Unit1.cpp(509): E2451 Undefined symbol 'config' 高高屋海苔
------
高高屋海苔
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-14 18:16:57 IP:210.65.xxx.xxx 未訂閱
不好意思插花一下,硬體問題可以參考我之前的討論: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=64587 要用雙ccd之前,可要好好考慮這一項問題;所以"資源不夠"是一個"軟體"很難解決的問題! 寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin
988078
一般會員


發表:23
回覆:15
積分:7
註冊:2005-03-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-14 22:57:54 IP:203.68.xxx.xxx 未訂閱
請問前輩~~ TVideocapture元件要怎麼抓資料顯示在image上 煩請前輩指教 高高屋海苔
------
高高屋海苔
poaivy
中階會員


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-15 01:07:36 IP:140.117.xxx.xxx 未訂閱
選取該事件     在 void __fastcall TForm1::capBitmapGrabbed(TCapturedBitmap *CapturedImage)裡面輸入 { Image1->Picture->Assign(CapturedImage);} 然後拉一個BUTTON裡面輸入cap->CaptureFrame();去觸發該事件 以上是我小小心得 如果有更好的方法也請提出 發表人 -
dragonhippopdc
一般會員


發表:45
回覆:51
積分:19
註冊:2005-01-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-15 10:28:02 IP:203.68.xxx.xxx 未訂閱
請問各位大大~如果用這個方式來擷取ccd的話有辦法抓它的frame來做處理嗎~ 有辦法使用類似以下這段code去直接抓ccd內的資料嗎~而不用去抓它已經顯示到image上的圖~因為這樣處理起來會比較快
 
LRESULT CALLBACK FrameCallBack( HWND hwnd, Longint lpvhdr )
{
static BITMAPINFOHEADER BitmapHead;
static BITMAPINFO BitmapInfo;
static BITMAPFILEHEADER BitmapFileHead;
CAPSTATUS status;
int BIHsize, byte;
Byte *ptr;
TMemoryStream *stream = new TMemoryStream;    VideoStr=LPVIDEOHDR(lpvhdr);    capGetStatus( ghCapWnd, &status, sizeof(status) ) ;    BIHsize=capGetVideoFormatSize( ghCapWnd );    capGetVideoFormat( ghCapWnd, &BitmapHead, BIHsize);    BitmapInfo.bmiHeader=BitmapHead;    stream->Size=sizeof(BitmapFileHead)   sizeof(BitmapHead)   BitmapHead.biSizeImage;    BitmapFileHead.bfType=0x4D42;
BitmapFileHead.bfSize=stream->Size;
BitmapFileHead.bfOffBits=sizeof(BitmapFileHead)   sizeof(BitmapHead); // ???imagedata??    stream->Position=0;
stream->WriteBuffer( &BitmapFileHead, sizeof(BitmapFileHead) );
stream->WriteBuffer( &BitmapInfo, sizeof(BitmapInfo) );
(void*)ptr=stream->Memory;
ptr  = BitmapFileHead.bfOffBits;
Move( VideoStr->lpData, ptr, BitmapHead.biSizeImage);    stream->Position=0;    Form1->Image1->Picture->Bitmap->LoadFromStream( stream );
delete( stream );
capSetCallbackOnFrame (ghCapWnd, NULL);
return(0);
}
系統時間:2024-05-19 11:09:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!