我正在尝试使用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对象的解决方案。
感谢。
答案 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);