2011-04-18 32 views
1

Im使用EMGU(opencv包裝)進行圖像處理。我想從一個文件夾中逐個加載圖像以對它們執行一些操作。我使用下面的代碼,並會在使用塊中執行一些操作。正確處理EMGU中的圖像

 string[] filenames = Directory.GetFiles(directory); 


     foreach(string filename in filenames) 
     { 

      using (Image<Bgr, Byte> image = new Image<Bgr, byte>(filename)) 
      { 



      } 

     } 

但是,當我運行代碼時,應用程序使用不斷增長的內存塊,直到遇到有關尋址或內存不足的異常。

有什麼建議嗎?

回答

1

此代碼看起來不錯。我的猜測是你正在爲每個圖像執行的一個或多個操作是分配一個未被清理的圖像的副本。

+0

是的,這似乎是問題所在。必須確保我妥善處置了無意中製作的任何副本。垃圾收集器不應該照顧這個嗎? – Christo 2011-04-18 13:33:34

+0

GC將處理託管對象,但EmguCV只是非託管API的包裝 - 這是泄漏的內存。 – dahlbyk 2011-04-18 16:06:09