2016-09-22 8 views
2

Я использую библиотеку Emgu.CV.World и набор классов x86 в веб-решении ASP.NET MVC5. Версия EMGU: 3.1.0.2282.Исключение исключения Emgu.CV.CvInvoke в iisexpress.exe

Некоторое время он работал, то я сделал копию проекта в том же каталоге и изменил имя папки, затем стали появляться сообщение об ошибке:

Исключение брошено в 0x2AF630B1 (cvextern. dll) в файле iisexpress.exe: 0xC0000005: место чтения нарушения доступа 0x00000000.

Эта же функциональность реализована в приложении Win Forms из тех же библиотек, она работает без проблем. Но веб-приложение все время ломается, используя этот метод: CvInvoke.Threshold().

Использованы каталоги x86, x64, скопируйте все библиотеки в отдельный каталог, измените тип приложения на любой процессор, x86 на x64 и ничего. Пробовал другие системы (64-разрядные) - это то же самое. Самое интересное, что изначально это сработало, т. Е. Ошибка, которой мой код не является.

Я использовал сообщество IIS Express 10, vs 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 

К сожалению, природа ошибки запутать меня.