在我的 winforms 应用程序中,我需要使用一些 Emgu.CV 库(我已经安装了 Emgu 2.9)。

问题是我收到以下错误:

System.TypeInitializationException was unhandled
     HResult=-2146233036
     Message=The type initializer for 'Emgu.CV.OCR.Tesseract' threw an exception.
     Source=Emgu.CV.OCR
     TypeName=Emgu.CV.OCR.Tesseract
     StackTrace:
         at Emgu.CV.OCR.Tesseract..ctor(String dataPath, String language, OcrEngineMode mode)
         at ANPR.LicensePlateDetector..ctor(String dataPath) in c:\Users\blabla\Visual Studio 2012\Projects\ANPR\ANPR\LicensePlateDetector.cs:line 30
         at ANPR.Form1..ctor() in c:\Users\blabla\Visual Studio 2012\Projects\ANPR\ANPR\Form1.cs:line 22

   InnerException: System.TypeInitializationException
   HResult=-2146233036
   Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
   Source=Emgu.CV
   TypeName=Emgu.CV.CvInvoke
   StackTrace:
        at Emgu.CV.CvInvoke.CV_MAKETYPE(Int32 depth, Int32 cn)
        at Emgu.CV.OCR.Tesseract..cctor() in c:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\Emgu.CV.OCR\Tesseract.cs:line 26

   InnerException: System.DllNotFoundException
        HResult=-2146233052
        Message=Unable to load DLL 'opencv_core290': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
        Source=Emgu.CV
        TypeName=""
        StackTrace:
             at Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
             at Emgu.CV.CvInvoke..cctor() in c:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\Emgu.CV\PInvoke\CvInvoke.cs:line 266

尝试实例化一个新的 Tesseract 对象时会发生这种情况:
var tesseract = new Tesseract("", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

由于引用“opencv_core290”不起作用,我尝试了 here 提供的解决方法。基本上,我将 .dll 复制到我的项目中,使用“添加现有资源”添加它
并将其属性修改为“始终复制”。然而这并没有奏效。谢谢你的帮助!

最佳答案

我也有这个问题。您应该将 x86 或 x64 文件夹中的 DLL 从“yourEmguFolder/bin”复制到项目的输出目录。然后再次构建项目并运行。

我根据这个页面上的描述解决了 EMGU WIKI

关于c# - 无法加载 DLL 'opencv_core290,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20817685/

10-11 23:40