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

时间:2017-08-03 11:16:40

标签: c# aforge motion-detection

我正在尝试使用AForge.net框架来运行简单的运动检测程序。在AForge网站上有一个这样的程序的例子,但它很模糊:

    // 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对象的解决方案。

感谢。

1 个答案:

答案 0 :(得分:0)

您希望利用AForge的DirectShow VideoInputDevice。而不是while循环,你将有一个NewFrame事件来控制运动检测器。

首先,您需要参考:

function checkUsername(var minLength){
//some codes
}

接下来,您需要获取捕获设备,例如您的网络摄像头并为设备的NewFrame事件添加新的帧事件处理程序:

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

现在您可以选择实现NewFrameEventHandler:

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