我在网络解决方案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社区。
我将感谢您的一些建议,谢谢
最佳答案
找到了答案。在最后的重构行中,未注意到该错误的原因: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
不幸的是,错误的性质使我感到困惑。