EmguCV - nvcuda.dll could not be found
Asked Answered
B

8

16

I've been asked to build a real-time face recognition application, and after some looking around I've decided to try EmguCV and OpenCV as the facial recognition library.

The issue I'm having at the moment is trying to get the SDK installed and working. I've followed the instructions found here to try and get it running, but I still can't run the samples. Whenever I try and run them, I get the error

The program can't start because nvcuda.dll is missing from your computer. 
Try reinstalling the program to fix this problem.

I've tried most of the usual fixes, such as adding the bin folder to my environment path and copying the dll's into my system32 folder, but none of it seems to work.

  • EmguCV version 2.4.2.1777-windows-x64-gpu
  • Windows 8
  • AMD Radeon HD 6700 series graphics card.

I'm assuming this is an issue with the fact that I dont have an nVidia graphics card, but I'm not sure what I can do about it. For now, I'm going to try recompiling the source rather than using the downloaded .exe, and seeing if that helps.

Any suggestions?

Bouffard answered 26/9, 2012 at 5:20 Comment(0)
R
11

Had the same problem, EmguCV 2.4.2 (no matter if x86 or x64) is compiled with GPU and you have to had nvidia GPU with CUDA support. So, if you want for eg. Fisherfaces from 2.4 in C# - wait for non-GPU release or buy/borrow CUDA card ;)

Rabid answered 5/10, 2012 at 18:56 Comment(0)
B
8

I happen to have the exact same problem as you. Everything is working fine on my computer (WinXP 32-bit) but not on Win7 64-bit computers. This was because on my computer I already have OpenCV 2.4.2 installed and when I execute my program the path to the OpenCV dll points to the OpenCV folder and not to the dlls in the EmguCV folder. The original OpenCV dll don't have this dependency on NVidia's driver.

I used Dependency Walker to help me find out what was happening, as suggested here.

This link says that only the -gpu packages have gpu processing enabled but as you say the latest version (2.4.2) only a gpu package and no no-gpu package...

I read here that all I needed was to download the latest NVidia drivers to get the nvcuda.dll file but I downloaded many packages and never found this file: gpu computing sdk, cuda toolkit, display drivers, device drivers...

My workaround, instead of using an older version of EmguCV/OpenCV is to use the original dll from OpenCV 2.4.2.

Bait answered 27/9, 2012 at 3:59 Comment(4)
Great answer! But can you please tell me where can i find the .dll files from OpenCV 2.4.2? (what directory)Hodgson
Download this file. Execute/extract it. The .dll are in ./build/x86 or x64/vc10/bin.Bait
Strange, this does not solve my issue. I have included them in my project and copied the files into the executable directory. But i still get the same error...Hodgson
Try using Dependency Walker to identify which dll is asking for nvcuda.dll.Bait
A
5

I just used nvcuda.dll from dll-files.com.

Abeokuta answered 22/10, 2012 at 13:46 Comment(2)
No work for me. I also think a single dll file may not solve the dependency problem.Muttonhead
This works for me. The given dll is X86 build. If it not works for you, your program may be in x64 build.Luigi
B
3

It seems the issue is that the latest version on the site does not contain a non-GPU enhanced download, and that the GPU enhanced download requires an nVidia graphics card for CUDA integration.

I successfully downloaded and run the previous version which does not have GPU enhancements.

Bouffard answered 27/9, 2012 at 2:24 Comment(0)
J
3

I had similar problem. When I compile and run my application on computer with NVIDIA gpu it works fine. Problem was when I moved app to another computer. This second computer has no NVIDIA gpu and it threw 'Emgu.CV.CvInvoke' exception. After many attempts I fortunately solved this problem. As you mentioned before for now there is only gpu package for version 2.4.2. I didn't notice this before.

For me solution was:

  • Copy files: 'cudart64_42_9.dll' and 'npp_42_9.dll' into Debug (application) folder
  • Copy file 'nvcuda.dll' into System32 folder. After this steps aplication works on all computers even without NVIDIA gpu/ CUDA.

Other solution might be using opencv universal gpu version (for now is alpha 2.4.9) link: http://sourceforge.net/projects/emgucv/files/emgucv/2.4.9-alpha/

Jensen answered 2/6, 2013 at 2:2 Comment(0)
F
0

You can download source EmguCV from GIT and compile it, i have done this and works :

http://www.emgu.com/wiki/index.php/Download_And_Installation#Building_from_Git

It generates a non-GPU version of dlls

Regards.

Feat answered 9/12, 2012 at 22:19 Comment(0)
C
0

here's also another copy of the dll's: http://www.kimchiandchips.com/files/vvvv/nvcuda/

so 2 solutions:

  1. Get NVidia CUDA DLL's from the above link. Ideally rename the 64 or 32bit version to nvcuda.dll based on your required platform. Put next to your opencv dll's
  2. Upgrade to 2.4.9 which has universal GPU support
Cady answered 21/8, 2014 at 0:52 Comment(0)
H
0

I also had some problems when doing my dissertation using EmguCV for face recognition. Try to use the stablest version libemgucv-windows-x86-2.4.0.1717.exe Try not to use the gpu download, this version has the least bugs and the 32-bit is better than the x64. when compiling for the first time use visual studio 2012. With this version you wont need to install all the above mentioned. You can see this example to know it really works : http://sourceforge.net/projects/emgufacerecog/

Heiress answered 19/11, 2014 at 13:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.