Вопрос

я пытаюсь настроить 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top