Pergunta

Estou tentando configurar o MotionDetection usando a estrutura do Aforge.net. Estou usando as informações fornecidas em isto página.

Eu configurei um VideoStream do DirectShow que alimenta uma parte da minha área de trabalho através de um fluxo. Posso escolher esse fluxo no projeto de amostra de videoplayer, que é fornecido com Aforge. (E eu vejo minha área de trabalho através do jogador).

No entanto, quando executo o código abaixo, recebo uma NullReferenceException. o que estou perdendo?

    // 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");
        }
    }

o detector é inicializado como variável de classe privada quando um vídeo é escolhido.

    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);
    }
Foi útil?

Solução

Dê uma olhada no BlobCountingObjectsProcessing motionProcessor, parece que você declarou a variável duas vezes, uma vez que não é inicializada e uma vez inicializada.

Um escopo de método externo e um escopo de método interno.

Eu acho que é daí que a sua NullReferenceException vem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top