无法加载DLL'opencv_core290

时间:2013-12-28 18:07:39

标签: c# winforms emgucv

在我的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复制到我的项目中,使用“添加现有资源”添加它 并将其属性修改为“始终复制”。然而,这不起作用。谢谢你的帮助!

3 个答案:

答案 0 :(得分:8)

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

我根据本页EMGU WIKI

上的说明解决了这个问题

答案 1 :(得分:7)

确切地说,opencv dll应该出现在你的应用程序bin \ debug或bin \ release文件夹中。您需要关注的主要事情是应该维护x64和x86 dll的dll文件夹结构。

即将 x86和x64 文件夹从 emgu \ bin 文件夹复制到应用程序的调试文件夹中。

发布 - 将这两个文件夹添加到VS中的项目中,然后将其属性设置为" 始终复制",这将自动生成照顾文件夹结构。

我也面临同样的问题,这个解决方案对我有用。

答案 2 :(得分:1)

当我添加opencv_core290.dll,opencv_highgui290.dll,opencv_imgproc290.dll时, 我在下面遇到了同样的问题:

System.DllNotFoundException:无法加载DLL' opencv_core290':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)    在Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler,IntPtr userdata,IntPtr prevUserdata)

在搞清楚这个问题之后,我添加了一个名为 cudart64_55.dll 的dll文件,并解决了这个问题。