2017-08-03 98 views
0

我正在嘗試使用AForge.net框架來獲得一個簡單的運動檢測程序。在AForge網站是這樣一個程序的例子,但它是相當含糊:如何將幀輸入運動檢測器對象AForge.net?

// create motion detector 
MotionDetector detector = new MotionDetector(
    new SimpleBackgroundModelingDetector(), 
    new MotionAreaHighlighting()); 

// continuously feed video frames to motion detector 
while (...) 
{ 
    // process new video frame and check motion level 
    if (detector.ProcessFrame(videoFrame) > 0.02) 
    { 
     // ring alarm or do something else 
    } 
} 

我需要一些幫助,while循環的條件,因爲我找不到怎麼養活視頻幀的解決方案到MotionDetector對象中。

謝謝。

回答

0

你會想要利用AForge的DirectShow VideoInputDevice。而不是一個while循環,你將有一個NewFrame事件來控制運動檢測器。

首先,您需要引用:

using AForge.Video.DirectShow; 
using AForge.Video; 
using AForge.Vision.Motion; 
using System.Drawing; 

接下來,您將需要獲得例如您的捕獲設備您的攝像頭,並添加一個新的幀事件處理程序newFrame的事件爲設備:

Cameras = new FilterInfoCollection(FilterCategory.VideoInputDevice); 
VideoCaptureDevice Camera = new VideoCaptureDevice(Cameras[0].MonikerString); 
Camera.NewFrame += new NewFrameEventHandler(ProcessNewFrame); 

但是現在你選擇,你可以實現NewFrameEventHandler:

private void ProcessNewFrame(object sender, NewFrameEventArgs eventArgs) 
{ 
    Bitmap frame = (Bitmap) eventArgs.Frame.Clone(); 
    if (detector.ProcessFrame(frame) > 0.02) 
    { 
     // ring alarm or do somethng else 
    } 
} 
+0

讓我知道如果你需要更多的援助。我剛剛完成了一個基於AForge的運動跟蹤器項目。 – Iridium237