real-time frame subtraction |
答題得分者是:arisaka_matsuri
|
yplin
一般會員 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
|
yplin
一般會員 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
我只是利用2 frame相減,可是感覺在同一個callback中所取得的frame是相同的。
LRESULT CALLBACK FrameCallBack( HWND hCapWnd, Longint lpvhdr ) { LPVIDEOHDR VideoStr; VideoStr=LPVIDEOHDR(lpvhdr); Graphics::TBitmap *bmp=new Graphics::TBitmap(); byte *ptr,*ptr1,*ptr2,*ptr3,*ptr4; bmp->Width=WIDTH; bmp->Height=HEIGHT; bmp->PixelFormat=pf24bit; int k=0; for (int h=0;h |
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
dear yplin:
因為兩次取得影像資料都寫在CALLBACK裡,bmp與bmp1取得的資料都是同一份,當然是相同的。我的作法是另外準備一個TBitmap物件來handle前一張影像,在每次CALLBACK中(抓到的影像看成「現在」的影像)再做相減,就不會有這個問題了。
大概的安排可以寫成
//** Unit1.h ** ... Graphics::TBitmap *pRefBitmap; ... //** Unit1.cpp ** __fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner) { ... pRefBitmap = new Graphics::TBitmap(); // 初始化你的參考影像 ... } . . . LRESULT CALLBACK FrameCallBack( HWND hCapWnd, Longint lpvhdr ) { // 取得目前的影像 ... // 將目前影像與參考影像相減 ... // 後處理(顯示或其他處理) ... }如此一來,每次新的影像擷取後,CALLBACK函式會被執行,就是以該影像與你所存的參考影像作相減。建議先把流程圖畫出來,會更清楚 |
yplin
一般會員 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
|
yplin
一般會員 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |