我在Web解决方案ASP.NET MVC5中使用了库Emgu.CV.World和一组类x86。版本EMGU:3.1.0.2282。
有一段时间它工作了,然后我在同一目录下制作了一个项目的副本并更改了文件夹的名称,然后开始出现错误:
iisexpress.exe中的0x2AF630B1(cvextern.dll)抛出异常:0xC0000005:访问冲突读取位置0x00000000。
在相同库的Win Forms应用程序中实现了相同的功能,它可以正常工作。 但是Web应用程序一直在崩溃,在这个方法上:CvInvoke.Threshold()。
使用x86,x64目录,将所有库复制到一个单独的目录中,将应用程序的类型更改为任何CPU,x86更改为x64,不执行任何操作。 尝试在其他系统(64位)是相同的。最有趣的是,它最初是有效的,即我的代码不是错误。
我使用的是IIS Express 10和2015社区。 p>
我很感激一些建议,谢谢
答案 0 :(得分: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
不幸的是,错误的本质让我感到困惑。