Как настроить обнаружение движения с помощью AForge? - PullRequest
0 голосов
/ 19 декабря 2009

Я пытаюсь настроить обнаружение движения с помощью инфраструктуры AForge.NET. Я использую информацию, предоставленную на этой странице.

Я установил видеопоток DirectShow, который передает часть моего рабочего стола через поток. Я могу выбрать этот поток в примере проекта видеоплеера, который предоставляется 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);
    }

1 Ответ

1 голос
/ 19 декабря 2009

Посмотрите на BlobCountingObjectsProcessing motionProcessor, кажется, вы объявили переменную дважды, один раз не инициализированный и один раз инициализированный.

Одна внешняя область метода и одна внутренняя область метода.

Я думаю, что именно отсюда исходит ваше исключение NullReferenceException.

...