2016-09-22 55 views
2

我在Web解決方案ASP.NET MVC5中使用庫Emgu.CV.World和一組x86類。版本EMGU:3.1.0.2282。iisexpress.exe中的Emgu.CV.CvInvoke異常

對於它的工作了一段時間,然後我在同一個目錄進行的項目的副本,並改變了文件夾的名稱,然後開始出現錯誤:

一個例外是在0x2AF630B1(cvextern拋出。 DLL)在iisexpress.exe中:0xC0000005:訪問衝突讀取位置0x00000000。

這個相同的功能在相同庫的Win Forms應用程序中實現,它的工作沒有問題。 但是,Web應用程序一直崩潰,在此方法:CvInvoke.Threshold()。

使用x86,x64目錄,將所有庫複製到一個單獨的目錄中,將應用程序的類型更改爲任何CPU,x86更改爲x64,而不進行任何操作。 在其他系統上嘗試(64位)是一樣的。最有趣的是,最初它的工作,即我的代碼不是錯誤的。

我使用IIS Express 10與2015社區。

我將不勝感激的一些建議,謝謝

+0

像這樣的產品缺陷應該向供應商報告。 –

+0

我同意,但有一段時間,同一個項目與這個圖書館合作 – Michael

回答

0

答案被發現。錯誤的原因在最後的重構行中沒有被注意到:imgGray.Dispose();

imageRotate = imgGray.Rotate(-avg, new Gray(255)); 
     } 
     else 
     { 
      imageRotate = imgGray; 
     } 
     imgGray.Dispose(); 

     //return imageRotate.Bitmap; 
     return BlackFilterImage(imageRotate); 
    } 

    private static Bitmap BlackFilterImage(Image<Gray, byte> img) 
    { 
     UMat resultImg = new UMat(); 
     CvInvoke.Threshold(img, resultImg, 105, 255, ThresholdType.BinaryInv); //Error is here 

不幸的是,錯誤的性質使我困惑。