【1.2.1 視訊擷取 】
講義裡有提供建立視訊視窗、連線視訊裝置和顯示視訊的程式碼
但是只有提供粗略的函數
在 BCB 中,要顯示視訊,要先在 Form 中建立一個 Panel
Panel 元件在 Standard 裡的倒數第二個
然後要在程式碼中引進 vfw 的標頭檔才能使用 cap 系列的函數
#include <vfw.h>
(點擊放大看全圖)
這是講義上沒提到的部分
然後建立一個 button,
把建立視訊視窗、連線視訊裝置和顯示視訊三個部分的程式碼都放在一起就可以了
compile 有錯的話只是缺少一些宣告 int i; 之類的程式碼,看錯誤訊息自己補一下就可以了
再補充兩個函數
1. 截斷視訊連結
capDriverDisconnect( hwndCapture );
2. 恢復視訊連結
capDriverConnect( hwndCapture,0 );
程式碼直接丟在 button 裡面或是 menu 的按鍵中就可以使用了
hwndCapture 是建立視訊視窗時宣告的 HWND class
【1.2.2 儲存影像陣列 】
講義裡提供了三種方法,都是先把影像顯示在 Image 元件中,
然後再把影像的內容儲存到陣列裡
第一個方法是是使用 CopyRect函數
複習一下 CopyRect 函數
CopyRect( Rect(0,0,Source->Width,Source->Height) ,
csBuf ,
Rect(0,0,Panel1->Width,Panel1->Height) );
CopyRect 是將 csBuf(第二個參數)中的影像資料,
依照 Panel1 指定的矩形大小(第三個參數)複製到 Source 指定的矩形位置(第一個參數) 內
然後再用 Bitmap->Assign 函數將 Source 的內容指定給 Image1->Bitmap
其實程式碼只要執行到
Image1->Picture->Bitmap->Assign(Source);
這一條指令, Image 上就會顯示擷取的單張影像了
挺神奇的!!
沒有留言:
張貼留言