AForge.NET 是基於C#設計的,在計算機視覺和人工智能方向擁有很強大功能的框架。btw... it's an open source framework. 附上官網地址: http://www.aforgenet.com/aforge/framework/ 。
今天要介紹的是AForge中的視頻采集功能,這裡的視頻包括從攝像頭等設備的輸入和從視頻文件的輸入。
首先來認識一下 視頻源播放器:VideoSourcePlayer,從攝像頭和文件輸入的視頻,都會通過它來播放,並按幀(Frame)來輸出Bitmap數據。
VideoSourcePlayer 使用有這麼幾個重要的步驟:
整個使用過程是非常簡單的。下面分別來看看攝像頭輸入和文件輸入的代碼吧:
1. 攝像頭輸入
首先是初始化和開始:
// 獲取視頻輸入設備列表 FilterInfoCollection devices = new FilterInfoCollection(FilterCategory.VideoInputDevice); // 獲取第一個視頻設備(示例代碼,未對devices個數為0的情況做處理) VideoCaptureDevice source = new VideoCaptureDevice(devices[0].MonikerString); // 設置Frame 的 size 和 rate source.DesiredFrameSize = new Size(640, 360); source.DesiredFrameRate = 1; // 設置VideoSourcePlayer的VideoSource VideoSourcePlayer videoPlayer = new VideoSourcePlayer(); videoPlayer.VideoSource = source; videoPlayer.NewFrame += videoPlayer_NewFrame; videoPlayer.Start();
這裡是NewFrame事件代碼:
private void videoPlayer_NewFrame(object sender, ref Bitmap image) { // do sth with image ... }
在使用完成後,停止的代碼:
videoPlayer.NewFrame -= videoPlayer_NewFrame; videoPlayer.SignalToStop(); videoPlayer.WaitForStop();
2. 文件輸入
首先是初始化和開始:
// 活體對應視頻路徑的文件作為視頻源 FileVideoSource videoSource = new FileVideoSource(videoFilePath); videoPlayer.VideoSource = videoSource; videoPlayer.NewFrame += videoPlayer_NewFrame; videoPlayer.Start();
其余兩部分代碼和攝像頭輸入是一樣的,這裡就不重復了。
對於文件輸入,還有一點需要注意的,有些機器的codec並不完整,導致FileVideoSource讀取某些格式,比如mp4的時候會出現讀取錯誤,這時需要安裝一個codec的pack,就可以了。
好了,AForge.NET 的視頻采集功能就介紹完了,接下來會再挑一些AForge中有趣的功能來做介紹。