在BCB上對即時影像繪圖? |
答題得分者是:taishyang
|
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
請搜尋 dspack 這個部份在這一、兩個月內有相關的討論,尤其 Rootkit 前輩也是用此元件處理即時畫面貼字
===================引 用 ruii11 文 章=================== 請教各位,我目前利用BCB來播放一Camera的即時影像,但想要在影像上做繪圖的功能(畫線、畫圓之類) 嘗試過在TImage上繪圖後,再疊到即時影像上,但有許多問題未解決且效果不彰,加上速度不符合需求 ,故不考慮此做法,想請教有無什麼合適的元件或方法呢? DirectDraw、DrawDIB可行嗎? 可以指點如果使用嗎? 謝謝~
------
價值的展現,來自於你用哪一個角度來看待它!! |
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
您好
我有閱讀過站上關於dspack相關文章,也成功的能在即時影像上畫圖,但所耗效能有點高,且形式不太符合需求 所以想請問在BCB的架構上,有什麼方法能對即時影像任意繪圖,且效能不錯呢?? ===================引 用 careychen 文 章=================== 請搜尋 dspack 這個部份在這一、兩個月內有相關的討論,尤其 Rootkit 前輩也是用此元件處理即時畫面貼字 ===================引 用 ruii11 文 章=================== 請教各位,我目前利用BCB來播放一Camera的即時影像,但想要在影像上做繪圖的功能(畫線、畫圓之類) 嘗試過在TImage上繪圖後,再疊到即時影像上,但有許多問題未解決且效果不彰,加上速度不符合需求 ,故不考慮此做法,想請教有無什麼合適的元件或方法呢? DirectDraw、DrawDIB可行嗎? 可以指點如果使用嗎? 謝謝~ |
daver046
一般會員 發表:3 回覆:5 積分:1 註冊:2004-04-28 發送簡訊給我 |
如果是先將Camera的影像利用ScanLine傳至一個TBitmap中,
再將要畫的圖也畫在此TBitmap上,最後再將這個TBitmap的資 料傳至要顯示的Image中,不知道這個方式能不能符合您的需求 ,之前我是使用這在方式在CCD的即時影像上畫上要的圖形。 ===================引 用 ruii11 文 章=================== 您好 我有閱讀過站上關於dspack相關文章,也成功的能在即時影像上畫圖,但所耗效能有點高,且形式不太符合需求 所以想請問在BCB的架構上,有什麼方法能對即時影像任意繪圖,且效能不錯呢?? ===================引 用 careychen 文 章=================== 請搜尋 dspack 這個部份在這一、兩個月內有相關的討論,尤其 Rootkit 前輩也是用此元件處理即時畫面貼字 ===================引 用 ruii11 文 章=================== 請教各位,我目前利用BCB來播放一Camera的即時影像,但想要在影像上做繪圖的功能(畫線、畫圓之類) 嘗試過在TImage上繪圖後,再疊到即時影像上,但有許多問題未解決且效果不彰,加上速度不符合需求 ,故不考慮此做法,想請教有無什麼合適的元件或方法呢? DirectDraw、DrawDIB可行嗎? 可以指點如果使用嗎? 謝謝~ |
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
請問您的意思是一張frame一張frame抓出來處理後再show出來嗎?
我現在的架構是用DirectShow的Video Render播影像,之前有試過用BCB 的 TImage 顯示影像 但frame rate下降許多,請問您這個方法,繪圖的顯示速度如何呢? ===================引 用 daver046 文 章=================== 如果是先將Camera的影像利用ScanLine傳至一個TBitmap中, 再將要畫的圖也畫在此TBitmap上,最後再將這個TBitmap的資 料傳至要顯示的Image中,不知道這個方式能不能符合您的需求 ,之前我是使用這在方式在CCD的即時影像上畫上要的圖形。 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
1.幫忙移到BCB討論區
2.daver046的意思應該就是您猜想的,frame rate一定很不理想,因為我很久以前有試過 :P 3.後來找到一個方式,將capCreateCaptureWindow的畫面顯示在panel上 然後再去對Panel做繪圖的動作 Panel原本沒有public出Canvas屬性,但是可以繼承後public出來,這站上有討論文章 ===================引 用 ruii11 文 章=================== 請問您的意思是一張frame一張frame抓出來處理後再show出來嗎? 我現在的架構是用DirectShow的Video Render播影像,之前有試過用BCB 的 TImage 顯示影像 但frame rate下降許多,請問您這個方法,繪圖的顯示速度如何呢? |
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
感謝您的意見,想請問將Camera的畫面顯示在Panel上,不會像顯示在TImage上,frame rate下降很多嗎? 另外是直接對camer影像panel繪圖嗎? 謝謝~ ===================引 用 taishyang 文 章=================== 1.幫忙移到BCB討論區 2.daver046的意思應該就是您猜想的,frame rate一定很不理想,因為我很久以前有試過 :P 3.後來找到一個方式,將capCreateCaptureWindow的畫面顯示在panel上 然後再去對Panel做繪圖的動作 Panel原本沒有public出Canvas屬性,但是可以繼承後public出來,這站上有討論文章 ===================引 用 ruii11 文 章=================== 請問您的意思是一張frame一張frame抓出來處理後再show出來嗎? 我現在的架構是用DirectShow的Video Render播影像,之前有試過用BCB 的 TImage 顯示影像 但frame rate下降許多,請問您這個方法,繪圖的顯示速度如何呢? |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
我爬了站上關於 Panel 上顯示Camera影像的文章,但大部份都是使用vfw,請問我目前是用directshow的架構
該如何像 Form1->Image1->Picture->Bitmap->LoadFromStream(msDest); 把影像Show在Panel上呢? 謝謝~ ===================引 用 taishyang 文 章=================== A1.順的不得了,因為TImage沒有handle, 所以才沒有辦法直接顯示在TImage上,因此才顯示在Panel上 A2.是畫在Panel上 ===================引 用 ruii11 文 章=================== 感謝您的意見,想請問將Camera的畫面顯示在Panel上,不會像顯示在TImage上,frame rate下降很多嗎? 另外是直接對camer影像panel繪圖嗎? 謝謝~ |
daver046
一般會員 發表:3 回覆:5 積分:1 註冊:2004-04-28 發送簡訊給我 |
確實如同taishyang大大所說的FPS會降低,不過因為我的處理對於即時性的要求沒那麼高
所以就還ok。 ===================引 用 taishyang 文 章=================== 1.幫忙移到BCB討論區 2.daver046的意思應該就是您猜想的,frame rate一定很不理想,因為我很久以前有試過 :P 3.後來找到一個方式,將capCreateCaptureWindow的畫面顯示在panel上 然後再去對Panel做繪圖的動作 Panel原本沒有public出Canvas屬性,但是可以繼承後public出來,這站上有討論文章 ===================引 用 ruii11 文 章=================== 請問您的意思是一張frame一張frame抓出來處理後再show出來嗎? 我現在的架構是用DirectShow的Video Render播影像,之前有試過用BCB 的 TImage 顯示影像 但frame rate下降許多,請問您這個方法,繪圖的顯示速度如何呢? |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
推薦自己的作品-VMRBitmap範例
不會閃爍,不用處理額外的訊息,畫圖就和一般的bitmap相同 http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=37755#13 有附執行檔,先試用看看再決定要不要安裝dspack http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=95742 執行時若需要DirectX9_BCB6.bpl請到這裡下載 http://delphi.ktop.com.tw/download.php?download=upload/489da1a9704cb_Playcap.rar |
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
|
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
bugmans大,小弟已經下載過您的作品了,也可以利用dspack在即時影像上即時畫圖 但因為目前使用DirectShow的架構,需要使用到其它的filter,所以暫不考慮dspack 想請教一下,您的範例中有一行是 VMRBitmap->DrawTo(0,0,1,1,0.5); 將繪圖貼上畫面,但會讓整個畫面有一層mask的感覺(就是貼上去的圖) 請問有辦法只顯示繪圖的部份,其餘部份是透明的嗎? 謝謝~ ===================引 用 bugmans 文 章=================== 推薦自己的作品-VMRBitmap範例 不會閃爍,不用處理額外的訊息,畫圖就和一般的bitmap相同 http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=37755#13 有附執行檔,先試用看看再決定要不要安裝dspack http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=95742 執行時若需要DirectX9_BCB6.bpl請到這裡下載 http://delphi.ktop.com.tw/download.php?download=upload/489da1a9704cb_Playcap.rar |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
可以試試Bitmap1Click的
VMRBitmap->ColorKey =clWhite;//設定白色為透明色 VMRBitmap->DrawTo(0,0,1,1,1); 只要载入的圖檔有白色的部份就會變成透明 雖然dspack也可以用filter,但你只想純用direct show的話 可以參考dspack關於VMRBitmap的原始碼(在\src\DSPack\DSPack.pas) [code delphi] procedure TVMRBitmap.Draw; var VMRMixerBitmap: IVMRMixerBitmap9; begin if Succeeded(FVideoWindow.QueryInterface(IVMRMixerBitmap9, VMRMixerBitmap)) then VMRMixerBitmap.SetAlphaBitmap(@FVMRALPHABITMAP); end; [/code] 改用direct show的IVMRMixerBitmap9都可以達到相同的效果 ===================引 用 ruii11 文 章=================== bugmans大,小弟已經下載過您的作品了,也可以利用dspack在即時影像上即時畫圖 但因為目前使用DirectShow的架構,需要使用到其它的filter,所以暫不考慮dspack 想請教一下,您的範例中有一行是 VMRBitmap->DrawTo(0,0,1,1,0.5); 將繪圖貼上畫面,但會讓整個畫面有一層mask的感覺(就是貼上去的圖) 請問有辦法只顯示繪圖的部份,其餘部份是透明的嗎? 謝謝~ |
ruii11
一般會員 發表:1 回覆:8 積分:1 註冊:2008-12-16 發送簡訊給我 |
對後,可以用ColorKey~
解決透明的問題了! 原來VMRBitmap就是利用 VMR9 的 Blend 方式 可是這樣繪圖的速度會受限於Camera的FPS,感覺不夠即時 所以才想要利用BCB元件或者是其它方式來繪圖,讓繪圖更新速度不會受限於Camera的FPS 順便請教大家,我在用利TImage在Camera畫面上繪圖時,畫面會一直閃爍 但是我已經把 Form->DoubleBuffered = true; 可是畫面還是一直閃動,請問可能是什麼原因呢? 謝謝~ ===================引 用 bugmans 文 章=================== 可以試試Bitmap1Click的 VMRBitmap->ColorKey =clWhite;//設定白色為透明色 VMRBitmap->DrawTo(0,0,1,1,1); 只要载入的圖檔有白色的部份就會變成透明 雖然dspack也可以用filter,但你只想純用direct show的話 可以參考dspack關於VMRBitmap的原始碼(在\src\DSPack\DSPack.pas) [code delphi] procedure TVMRBitmap.Draw; var VMRMixerBitmap: IVMRMixerBitmap9; begin if Succeeded(FVideoWindow.QueryInterface(IVMRMixerBitmap9, VMRMixerBitmap)) then VMRMixerBitmap.SetAlphaBitmap(@FVMRALPHABITMAP); end; [/code] 改用direct show的IVMRMixerBitmap9都可以達到相同的效果 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |