Как настроить обнаружение движения с помощью AForge?
-
20-09-2019 - |
Вопрос
я пытаюсь настроить motiondetection с помощью AForge.NET framework.Я использую информацию, предоставленную на это Страница.
Я настроил видеопоток DirectShow, который передает часть моего рабочего стола через поток.Я могу выбрать этот поток в примере проекта videoplayer, который поставляется с AForge.(И я вижу свой рабочий стол через плеер).
Однако, когда я запускаю приведенный ниже код, я получаю исключение NullReferenceException.Что я упускаю из виду?
// New frame received by the player
private void videoSourcePlayer_NewFrame( object sender, ref Bitmap image )
{
if (this.detector.ProcessFrame(image) > 0.02)
{
Console.WriteLine("Motion");
}
else
{
Console.WriteLine("No motion");
}
}
Тот самый detector
инициализируется как частная переменная класса при выборе видеопотока.
private MotionDetector detector;
private BlobCountingObjectsProcessing motionProcessor;
// Open video source
private void OpenVideoSource( IVideoSource source )
{
BlobCountingObjectsProcessing motionProcessor = new BlobCountingObjectsProcessing();
MotionDetector detector = new MotionDetector(
new SimpleBackgroundModelingDetector(),
motionProcessor);
}
Решение
Взгляните на BlobCountingObjectsProcessing motionProcessor
, кажется, вы объявили переменную дважды, один раз не инициализированную и один раз инициализированную.
Один внешний метод и один внутренний метод.
Я думаю, именно отсюда берется ваше исключение NullReferenceException.