سؤال

أحاول إعداد COMMATEDECENTER باستخدام إطار AFORGE.NET. أنا أستخدم المعلومات المقدمة هذه صفحة.

لقد قمت بإعداد مقاطع فيديو 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