iisexpress.exe中的Emgu.CV.CvInvoke异常

时间:2016-09-22 16:24:18

标签: c# asp.net iis-express emgucv

我在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社区。

我很感激一些建议,谢谢

1 个答案:

答案 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

不幸的是,错误的本质让我感到困惑。