0

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);
    }
4

1 に答える 1

1

を見てBlobCountingObjectsProcessing motionProcessorください。変数を2回宣言したようです。1回は初期化されておらず、もう1回は初期化されています。

1つの外部メソッドスコープと1つの内部メソッドスコープ。

そこからNullReferenceExceptionが発生していると思います。

于 2009-12-19T19:54:23.967 に答える