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

使用timer抓取webcam影像

答題得分者是:senso
olerll
一般會員


發表:2
回覆:2
積分:0
註冊:2009-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-11-11 03:59:57 IP:59.112.xxx.xxx 訂閱
因課業上的需要,最近在寫使用webcam來抓取影像後做處裡的相關程式,參考了很多網路上的範例
因為要每隔一段時間就要抓,所以試著用timer來寫,但卻沒有執行成功,之前沒有碰過bcb,也許是有些基礎的地方沒有搞懂,還請高手們指教

原本抓取webcam目前影像的這個動作我寫在button內,按下去就可抓,但是只能抓一次,這個部分也是參考文上的←這是不懂的第一個地方,不是應該按一次抓一次嗎?
後來將動作寫在timer內,原本的想法是設一個button,當點下去時才啟動timer,不過似乎沒有效果?
跑出來的結果是button還沒按,image的地方它就自己去抓了螢幕的左上角畫面,按了也沒反應,試寫過用bool變數去判斷,但結果還是一樣
是timer的用法搞錯了嗎?

請幫我看一下 ,謝謝@@"

code如下:

[code cpp]

void __fastcall TForm1::Button5Click(TObject *Sender)
{

Timer1->Enabled = true;
Timer1->Interval = 100;
Timer1->OnTimer = Timer1Timer;


//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{

HDC dc=GetDC(WC);

Image1->Picture->Bitmap->Width=320;
Image1->Picture->Bitmap->Height=240;
BitBlt(Image1->Picture->Bitmap->Canvas->Handle,0,0,320,240,dc,0,0,SRCCOPY);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{ ReleaseDC(WC,dc);
Timer1->Enabled = false;
}
[/code]


編輯記錄
olerll 重新編輯於 2010-11-10 13:01:32, 註解 無‧
olerll 重新編輯於 2010-11-10 13:02:17, 註解 無‧
senso
高階會員


發表:5
回覆:126
積分:226
註冊:2003-11-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-11-11 10:29:11 IP:61.219.xxx.xxx 訂閱
可能Timer1預設Enable=true所以你還沒按button就啟動了

在BitBlt之後加
Image1->Refresh();

olerll
一般會員


發表:2
回覆:2
積分:0
註冊:2009-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-11-13 02:54:32 IP:59.112.xxx.xxx 訂閱
謝謝senso大~
timer就如您所說的,應該是預設的問題,我將預設改為false之後,等要用的時候再啟動就可以了
另外影像也能抓的很順~~
之後要來更進一步來對其做處理了,之後若有其他疑問也請多多指教~!!
非常感謝~~!!

系統時間:2017-10-19 8:11:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!