Domanda

sto cercando di impostare MotionDetection utilizzando il framework AForge.NET. Sto utilizzando le informazioni fornite su questa pagina .

Ho installato un videostream DirectShow che alimenta una parte del mio desktop attraverso un flusso. Posso scegliere questo flusso nel progetto di videoregistratore di esempio che è dotato di AForge. (E vedo il mio desktop attraverso il lettore).

Tuttavia, quando si esegue il codice qui sotto ricevo un NullReferenceException. Che cosa mi manca?

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

Il detector viene inizializzata come variabile di classe privata quando viene scelto un videostream.

    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);
    }
È stato utile?

Soluzione

Dai un'occhiata al BlobCountingObjectsProcessing motionProcessor, sembra aver dichiarato la variabile due volte, una volta Non inizializzato e una volta inizializzato.

Un metodo fuori portata e un metodo portata all'interno.

Credo che sia dove il vostro NullReferenceException proviene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top