教程如何在 Asp.Net MVC 应用程序中使用 EmguCV

Tutorial how to use EmguCV in Asp.Net MVC application

我创建了概念验证控制台应用程序,它使用 EmguCV 进行模板匹配。 openCV的版本是2.4.

现在我的现实生活 asp.net mvc 应用程序出现问题。我有一个运行时错误:

The type initializer for 'Emgu.CV.CvInvoke' threw an exception. System.DllNotFoundException: Unable to load DLL 'opencv_core2410': The specified module could not be found.

看到了其他几个问题,但它们不完整或没有答案:

  1. How use EmguCV in a MVC.NET project

  2. Error:The type initializer for 'Emgu.CV.CvInvoke' threw an exception

我已经尝试过的:

  1. 将 EmguCV 安装中的 x64 和 x86 文件夹复制到已发布的 bin 文件夹中(这些文件夹包含 opencv dll)

  2. 将 opencv dll 添加到我的 Web 项目并将它们设置为 "Copy to output directory",如下所述:http://www.codeproject.com/Articles/257502/Creating-Your-First-EMGU-Image-Processing-Project

  3. 请注意,它在 concole 应用程序中运行良好,但在 mvc 中运行良好。

嗯,我找不到这个问题的正常解决方案。

在主题 How use EmguCV in a MVC.NET project 中有一条信息,EmguCV 仅适用于 IIS,不适用于 IIS Express。不,我什至在我们的产品服务器上发布时也遇到了同样的错误。

所以唯一对我有用的方法是:

  1. 创建控制台应用程序,它使用 EmguCV 并处理我的图像。
  2. 从 .net mvc 应用程序调用它作为带有参数的 .exe 文件。

我将我的问题标记为已回答,但这更像是一个肮脏的黑客,而不是一个好的解决方案。

解决方案来自 How use EmguCV in a MVC.NET project

部分正确,在 EMGU 在 IIS 下工作之前需要进行两个主要更改

  1. 为 运行 32 位应用程序激活您的 app_pool https://help.webcontrolcenter.com/kb/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx

  2. 然后您需要转到应用程序 \bin 文件夹,为文件夹 "x86"(包含 emgu 的所有 dll)授予文件安全性,如下所述 link http://www.iis.net/learn/manage/configuring-security/application-pool-identities

    如果你的apppool在defaulapppool中使用,那么你应该添加用户"IIS AppPool\DefaultAppPool"

我花了 5 个小时才弄明白!!!