我在网络解决方案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


不幸的是,错误的性质使我感到困惑。

10-01 20:46