在我的 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/