在我的winforms应用程序中,我需要使用一些Emgu.CV库(我已经安装了EMGU2.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复制到我的项目中,使用“添加现有资源”添加它,并将它的属性修改为“总是复制”。然而,这并不起作用。谢谢你的帮助!
发布于 2014-01-12 02:01:34
我也有这个问题。您应该将x86或x64文件夹中的DLL从“您的yourEmguFolder/bin”复制到项目的输出目录中。然后再次构建项目并运行。
我根据这个页面上的描述解决了这个问题EMGU WIKI
发布于 2014-06-15 15:49:09
确切地说,opencv dll应该位于应用程序的bin\debug或bin\release文件夹中。您必须关心的主要问题是应该维护x64和x86 dlls的dlls的文件夹结构。
也就是说,将x86和x64文件夹从emgu\bin文件夹复制到应用程序的调试文件夹中。
用于发布的-将这两个文件夹添加到VS中的项目中,然后将它们的属性设置为"Copy Always",这将自动处理文件夹结构。
我也面临着同样的问题,这个解决方案对我很有效。
发布于 2015-01-19 15:57:31
当我添加opencv_core290.dll、opencv_highgui290.dll、opencv_imgproc290.dll时,我遇到了下面同样的问题:
System.DllNotFoundException:无法加载DLL 'opencv_core290':找不到指定的模块。(HRESULT异常: 0x8007007E) at Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler,IntPtr userdata,IntPtr prevUserdata)
弄清楚这个问题后,我添加了一个dll文件,名为cudart64_55.dll,,并解决了这个问题。
https://stackoverflow.com/questions/20817685
复制相似问题