CCD用capOverlay方式的問題.. |
答題得分者是:cmf
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
請問大家:
用VFW擷取CCD影像時,通常影像都是呈現在Form上或是Panel上
有沒有辦法顯示在Image上,且採用capOverlay呢??
我之前是用Timer元件以
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
SendMessage(vcHWND,WM_CAP_EDIT_COPY,0,0L);
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP,Clipboard()->GetAsHandle(CF_BITMAP),0);
}
使影像在Image上呈現,但用了capOverlay卻沒有效果... 謝謝大家
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
或者你可使用下列方式 void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ HDC dc:=GetDC(h); // h 為 vcHWND 的 parent, 請自行修改 Image1->Picture->Bitmap->Width=320;
Image1->Picture->Bitmap->Height=240;
BitBlt(Image1->Picture->Bitmap->Canvas->Handle,0,0,320,240,dc,0,0,SRCCOPY);
ReleaseDC(h,dc); }
------
︿︿ |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
taishyang:
會的,我會繼續提供協助的
如果使用 capOverlay 模示,請參考下列 void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
capGrabFrameNoStop(vcHWND);
capeditCopy(vcHWND);
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP,Clipboard()->GetAsHandle(CF_BITMAP),0);
} 發表人 - cmf 於 2003/02/14 15:51:10
------
︿︿ |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
cmf您好: 再次感謝您的協助不過還是沒有成功....
我把我的程式碼附上,請您看看是哪邊出了問題,麻煩您了 void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ capGrabFrameNoStop(VideoWnd);
capEditCopy(VideoWnd);
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP,Clipboard()->GetAsHandle(CF_BITMAP),0); }
//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender)
{
VideoWnd = capCreateCaptureWindow("VideoWindow",WS_CHILD | WS_VISIBLE,0,0,320,240
,Form1->Handle,(int)1);
CAPDRIVERCAPS *psCaps; if (capDriverConnect (VideoWnd, 0) !=0 )
{
psCaps= new CAPDRIVERCAPS;
capDriverGetCaps (VideoWnd,psCaps,sizeof(CAPDRIVERCAPS));
capOverlay(VideoWnd,true);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
謝謝cmf您的指導:
但現在因為SendMessage(VideoWnd,WM_CAP_FILE_SAVEDIB, 0,"TEST.bmp");
而出現了Cannot convert 'char *' to 'long'與
Type mismatch in parameter 'lParam' (wanted 'long', got 'char *')
的錯誤訊息^^" 另外再請教cmf一個問題,有辦法能不用Timer..
而讓Image像Form一樣呈現影像呢?? 真是不好意思麻煩您了
順心
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
taishyang: 你可使用 macro 或 message 方示 呼叫 VFilename = Now().FormatString("yyyymmddhhnnss")+".bmp";
SendMessage(VideoWnd,WM_CAP_GRAB_FRAME,0,0);
SendMessage(VideoWnd,WM_CAP_FILE_SAVEDIB, 0,(long)VFilename);
//.......
capGrabFrame(VideoWnd);
capFileSaveDIB(VideoWnd,VFilename); 至於要使用 Timer 或 其它方式 ,要看你的用途是什麼
------
︿︿ |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
cmf謝謝您:
將code改成
String VFilename;
VFilename = Now().FormatString("yyyymmddhhnnss") ".bmp";
SendMessage(VideoWnd,WM_CAP_GRAB_FRAME,0,0);
SendMessage(VideoWnd,WM_CAP_FILE_SAVEDIB, 0,(long)VFilename.c_str());
capGrabFrameNoStop(VideoWnd);
capEditCopy(VideoWnd);
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP,Clipboard()->GetAsHandle(CF_BITMAP),0); 已經可以存檔了(我原本是用Image1->Picture->SaveToFile),但Image畫面仍然沒有Overlay的效果,請您繼續指導囉^_^感激不盡
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
taishyang: 以上所言,在我的電腦上RUN,是沒問題的
所以我們來作一些驗證 1. 請確認 圖檔內容 是否正確 2. 抓圖 -> 存圖 -> 載入圖 查看 image1 顯視內容是否正確
String VFilename;
VFilename = Now().FormatString("yyyymmddhhnnss")+".bmp";
SendMessage(VideoWnd,WM_CAP_GRAB_FRAME,0,0);
SendMessage(VideoWnd,WM_CAP_FILE_SAVEDIB, 0,(long)VFilename.c_str());
Image1->Picture->LoadFromFile(VFilename);
3.抓圖 -> 將圖存入剪貼簿-> 至任意繪圖軟體->貼上 查看內容是否正確
capGrabFrameNoStop(VideoWnd);
capEditCopy(VideoWnd);
------
︿︿ |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
taishyang: 跟你介紹一個人 "Ricky_567"
他是作
SGLathe 車床CAD\CAM軟體、銑床CAD\CAM軟體、
SGTM傳輸模擬、專業CAD\CAM軟體開發、逆向工程研發、
自動3D掃描機、手動3D掃描機 關於 vfw 方面 他粉厲害歐
有空 發張信給他,向他 討教 討教
http://delphi.ktop.com.tw/pop_profile.asp?mode=display&id=840
------
︿︿ |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
這一篇參考看看
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/avicap_9cxf.asp 我還沒使用過 如果試之後可以的話
麻煩教我..........3Q
------
︿︿ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |