如何将帧输入运动检测器对象AForge.net?

问题描述:

我正在尝试使用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对象中。

谢谢。

你会想要利用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