Question

Je suis en train de motiondetection d'installation en utilisant le cadre AForge.NET. J'utilise les informations fournies sur cette page .

J'ai installé un flux vidéo DirectShow qui alimente une partie de mon bureau par un ruisseau. Je peux choisir ce flux dans l'exemple de projet VideoPlayer qui est fourni avec Aforge. (Et je vois mon bureau à travers le lecteur).

Cependant, quand je lance le code ci-dessous je reçois un NullReferenceException. Qu'est-ce que je manque?

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

Le detector est initialisé comme variable de classe privée lorsqu'un est choisi flux vidéo.

    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);
    }
Était-ce utile?

La solution

Jetez un oeil à la BlobCountingObjectsProcessing motionProcessor, il semble que vous avez déclaré deux fois la variable, une fois et une fois non initialisé initialisés.

Un champ d'application de la méthode à l'extérieur et une portée de la méthode à l'intérieur.

Je pense que ce où votre NullReferenceException vient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top