I'm trying to start using emgu CV open CV for C#. But I'm having trouble making it work. I'm following this guide to make simple program using emgu CV Link but I get following error: (any idea what I'm doing wrong?)
System.TypeInitializationException was unhandled Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception. Source=Emgu.CV TypeName=Emgu.CV.CvInvoke StackTrace: at Emgu.CV.Image`2..ctor(String fileName) in c:\Emgu\emgucv-windows-x86-gpu 184.108.40.2067\Emgu.CV\Image.cs:line 144 at TEST.Form1.button1_Click(Object sender, EventArgs e) in c:\documents and settings\laci\my documents\visual studio 2010\Projects\TEST\TEST\Form1.cs:line 28 at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at TEST.Program.Main() in c:\documents and settings\laci\my documents\visual studio 2010\Projects\TEST\TEST\Program.cs:line 18 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: System.DllNotFoundException Message=Unable to load DLL 'opencv_core242': 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-x86-gpu 220.127.116.117\Emgu.CV\PInvoke\CvInvoke.cs:line 166 InnerException:
Since Emgu.CV is just a .NET wrapper (see http://en.wikipedia.org/wiki/Wrapper_library), you need to put the native .DLL files of OpenCV in your application output directory.
You can find the required files by downloading the corresponding version of OpenCV at http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.2/OpenCV-2.4.2.exe/download
I will save you all a lot of time. for EMGU CV version 2.4.* the missing dll is "nvcuda.dll" which is not part of the Binaries of EMGU but its usually located in system32 folder (maybe you need to have nvidia driver installed, if not just look for the dll online)
You might solve this problem by Using Dependency Walker -> http://www.dependencywalker.com/ on "opencv_core242.dll" to find any missing DLLs.
For me, It show that I didn't has tbb.dll as Thread here tbb.dll not found
Just download from https://www.threadingbuildingblocks.org/ and copy tbb*.dll to working directory or "System32" it will be fine
Old one, but I had the same problem. Turns out that 2.4.0 has GPU integration and if you don't have an Nvidia card, nvcuda.dll is missing and opencv_core242.dll fails to load. Tried everything, the only solution was to go back to 2.3.0 and everything worked fine.
Download dependency walker from http://www.dependencywalker.com/ and open the .dll claiming to not load. Then look for the dependencies, if one or more are missing from the directory of the app of even your system folder (system32 or syswow64) then they need to be in there.
here are proper steps to solve the problem.
visit : https://sourceforge.net/project/emgucv/emgucv/2.4.2/
download specific version of emgucv 2.4.2 according to your operating system like for windows x86 you can download : libemgucv-windows-x86-gpu-18.104.22.1687.exe
install it some where like C:\Emgu after that go to C:\Emgu\emgucv-windows-x86-gpu 22.214.171.1247\bin\x86 and copy all opencv dll files and paste it in your application exe output directory.
User contributions licensed under CC BY-SA 3.0