0

我想使用AForge.NET框架來設置motiondetection。我正在使用this頁面上提供的信息。如何使用AForge設置動作檢測?

我已經設置了一個DirectShow videostream,它通過一個流提供我的桌面的一部分。我可以在隨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); 
    } 

回答

1

有一個看BlobCountingObjectsProcessing motionProcessor,看來你已經聲明的變量兩次,一次沒有初始化,初始化一次。

一個外部方法範圍和一個內部方法範圍。

我認爲這就是你的NullReferenceException來自哪裏。

+0

正確:)。我習慣了VB,愚蠢的錯誤哈哈 – Ropstah 2009-12-21 18:18:09