線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:7894
推到 Plurk!
推到 Facebook!

在BCB上對即時影像繪圖?

答題得分者是:taishyang
ruii11
一般會員


發表:1
回覆:8
積分:1
註冊:2008-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-16 18:59:13 IP:211.75.xxx.xxx 訂閱
請教各位,我目前利用BCB來播放一Camera的即時影像,但想要在影像上做繪圖的功能(畫線、畫圓之類)

嘗試過在TImage上繪圖後,再疊到即時影像上,但有許多問題未解決且效果不彰,加上速度不符合需求

,故不考慮此做法,想請教有無什麼合適的元件或方法呢?

DirectDraw、DrawDIB可行嗎? 可以指點如果使用嗎? 謝謝~
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-16 19:07:21 IP:60.248.xxx.xxx 訂閱
請搜尋 dspack 這個部份在這一、兩個月內有相關的討論,尤其 Rootkit 前輩也是用此元件處理即時畫面貼字

===================引 用 ruii11 文 章===================
請教各位,我目前利用BCB來播放一Camera的即時影像,但想要在影像上做繪圖的功能(畫線、畫圓之類)

嘗試過在TImage上繪圖後,再疊到即時影像上,但有許多問題未解決且效果不彰,加上速度不符合需求

,故不考慮此做法,想請教有無什麼合適的元件或方法呢?

DirectDraw、DrawDIB可行嗎? 可以指點如果使用嗎? 謝謝~
------
價值的展現,來自於你用哪一個角度來看待它!!
ruii11
一般會員


發表:1
回覆:8
積分:1
註冊:2008-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-17 19:08:42 IP:211.75.xxx.xxx 訂閱
您好

我有閱讀過站上關於dspack相關文章,也成功的能在即時影像上畫圖,但所耗效能有點高,且形式不太符合需求
所以想請問在BCB的架構上,有什麼方法能對即時影像任意繪圖,且效能不錯呢??


===================引 用 careychen 文 章===================
請搜尋 dspack 這個部份在這一、兩個月內有相關的討論,尤其 Rootkit 前輩也是用此元件處理即時畫面貼字

===================引 用 ruii11 文 章===================
請教各位,我目前利用BCB來播放一Camera的即時影像,但想要在影像上做繪圖的功能(畫線、畫圓之類)

嘗試過在TImage上繪圖後,再疊到即時影像上,但有許多問題未解決且效果不彰,加上速度不符合需求

,故不考慮此做法,想請教有無什麼合適的元件或方法呢?

DirectDraw、DrawDIB可行嗎? 可以指點如果使用嗎? 謝謝~
daver046
一般會員


發表:3
回覆:5
積分:1
註冊:2004-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-18 10:28:16 IP:220.130.xxx.xxx 訂閱
如果是先將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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-18 11:04:27 IP:211.75.xxx.xxx 訂閱
請問您的意思是一張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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-18 11:21:30 IP:118.169.xxx.xxx 訂閱
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 重新編輯於 2008-12-18 11:22:30, 註解 無‧
taishyang 重新編輯於 2008-12-18 11:23:13, 註解 無‧
ruii11
一般會員


發表:1
回覆:8
積分:1
註冊:2008-12-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-12-18 13:19:53 IP:211.75.xxx.xxx 訂閱

感謝您的意見,想請問將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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-12-18 14:12:06 IP:118.169.xxx.xxx 訂閱
A1.順的不得了,因為TImage沒有handle,
所以才沒有辦法直接顯示在TImage上
,因此才顯示在Panel上

A2.是畫在Panel上




===================引 用 ruii11 文 章===================
感謝您的意見,想請問將Camera的畫面顯示在Panel上,不會像顯示在TImage上,frame rate下降很多嗎?
另外是直接對camer影像panel繪圖嗎? 謝謝~

ruii11
一般會員


發表:1
回覆:8
積分:1
註冊:2008-12-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-12-18 15:02:27 IP:211.75.xxx.xxx 訂閱
我爬了站上關於 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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-12-18 20:19:14 IP:211.74.xxx.xxx 訂閱
確實如同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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-12-18 20:58:56 IP:125.225.xxx.xxx 未訂閱
推薦自己的作品-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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2008-12-19 08:29:54 IP:211.75.xxx.xxx 訂閱
恩恩,謝謝您的意見囉 ~ : )


===================引 用 daver046 文 章===================
確實如同taishyang大大所說的FPS會降低,不過因為我的處理對於即時性的要求沒那麼高
所以就還ok。
ruii11
一般會員


發表:1
回覆:8
積分:1
註冊:2008-12-16

發送簡訊給我
#13 引用回覆 回覆 發表時間:2008-12-19 08:37:20 IP:211.75.xxx.xxx 訂閱

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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2008-12-19 10:03:21 IP:118.169.xxx.xxx 訂閱
dspack不就是把direct show包裝起來的VCL? 還是我認知錯誤 ^^?
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2008-12-19 11:28:17 IP:203.64.xxx.xxx 未訂閱
可以試試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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2008-12-19 13:31:53 IP:211.75.xxx.xxx 訂閱
對後,可以用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都可以達到相同的效果

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