web-dev-qa-db-fra.com

EmguCV - nvcuda.dll introuvable

On m'a demandé de créer une application de reconnaissance faciale en temps réel et, après quelques recherches, j'ai décidé d'essayer EmguCV et OpenCV comme bibliothèque de reconnaissance faciale.

Le problème que je rencontre en ce moment consiste à installer le SDK et à l’utiliser. J'ai suivi les instructions trouvées ici pour essayer de le faire fonctionner, mais je ne parviens toujours pas à exécuter les exemples. Chaque fois que j'essaie de les exécuter, j'obtiens l'erreur

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

J'ai essayé la plupart des correctifs habituels, tels que l'ajout du dossier bin à mon chemin d'environnement et la copie des dll dans mon dossier system32, mais rien ne semble fonctionner.

  • EmguCV version 2.4.2.1777-windows-x64-gpu
  • Windows 8
  • Carte graphique AMD Radeon HD 6700.

Je suppose que c'est un problème avec le fait que je n'ai pas de carte graphique nVidia, mais je ne suis pas sûr de ce que je peux faire à ce sujet. Pour le moment, je vais essayer de recompiler le code source plutôt que d'utiliser le fichier .exe téléchargé et de voir si cela aide.

Aucune suggestion?

16
Ryan French

Avec le même problème, EmguCV 2.4.2 (peu importe si x86 ou x64) est compilé avec GPU et vous devez avoir nvidia GPU avec le support CUDA. Donc, si vous voulez par exemple. Fisherfaces à partir de 2,4 en C # - attendez la sortie d'une carte non GPU ou achetez/empruntez une carte CUDA;)

11
user1197146

J'ai le même problème que vous. Tout fonctionne correctement sur mon ordinateur (WinXP 32 bits) mais pas sur les ordinateurs Win7 64 bits. Ceci est dû au fait que OpenCV 2.4.2 est déjà installé sur mon ordinateur et que, lorsque j'exécute mon programme, le chemin d'accès à la DLL OpenCV pointe vers le dossier OpenCV et non vers les DLL dans le dossier EmguCV. Les dll OpenCV d'origine n'ont pas cette dépendance sur le pilote de NVidia.

J'ai utilisé Dependency Walker pour m'aider à découvrir ce qui se passait, comme suggéré ici .

Ce lien indique que seuls les paquets -gpu ont le traitement gpu activé, mais comme vous le dites la dernière version (2.4.2), seul un paquet gpu et aucun paquet no-gpu ...

J'ai lu ici que tout ce dont j'avais besoin était de télécharger les derniers pilotes NVidia pour obtenir le fichier nvcuda.dll, mais j'ai téléchargé de nombreux packages et je n'ai jamais trouvé ce fichier: gpu computing sdk, cuda toolkit , pilotes d'affichage, pilotes de périphérique...

Ma solution de contournement, au lieu d’utiliser une version plus ancienne d’EmguCV/OpenCV, consiste à utiliser la DLL d'origine de OpenCV 2.4.2 .

8
rold2007

Je viens d'utiliser nvcuda.dll de dll-files.com.

4
Anon

Il semble que le problème est que la dernière version du site ne contient pas de téléchargement amélioré non-GPU et que le téléchargement amélioré GPU nécessite une carte graphique nVidia pour l'intégration CUDA.

J'ai téléchargé et exécuté avec succès la version précédente qui ne comporte pas d'améliorations du processeur graphique.

3
Ryan French

J'ai eu le même problème. Lorsque je compile et exécute mon application sur un ordinateur avec NVIDIA gpu, cela fonctionne correctement. Le problème était lorsque j'ai déplacé l'application sur un autre ordinateur. Ce deuxième ordinateur n’a pas de GPU NVIDIA et a lancé une exception «Emgu.CV.CvInvoke». Après de nombreuses tentatives, j'ai heureusement résolu ce problème. Comme vous l'avez mentionné précédemment, il n'y a que le paquetage gpu pour la version 2.4.2. Je n'avais pas remarqué cela avant.

Pour moi, la solution était:

  • Copier les fichiers: 'cudart64_42_9.dll' et 'npp_42_9.dll' dans le dossier Debug (application)
  • Copiez le fichier 'nvcuda.dll' dans le dossier System32. Après cette étape, l’application fonctionne sur tous les ordinateurs, même sans NVIDIA gpu/CUDA.

Une autre solution pourrait être d’utiliser la version oppn universal gpu (pour l’instant alpha 2.4.9) link: http://sourceforge.net/projects/emgucv/files/emgucv/2.4.9-alpha/

3
Adrian

voici également une autre copie des dll: http://www.kimchiandchips.com/files/vvvv/nvcuda/

donc 2 solutions:

  1. Obtenez les DLL NVIDIA CUDA à partir du lien ci-dessus. Dans l’idéal, renommez la version 64 ou 32 bits en nvcuda.dll en fonction de la plate-forme requise. Mettez à côté de votre dll opencv
  2. Passez à la version 2.4.9 qui prend en charge le processeur graphique universel
0
Elliot Woods

J'ai également eu des problèmes lors de ma thèse en utilisant EmguCV pour la reconnaissance faciale. Essayez d'utiliser la version la plus stable. Libemgucv-windows-x86-2.4.0.1717.exe Essayez de ne pas utiliser le téléchargement gpu, cette version présente le moins de bogues et la version 32 bits est meilleure que la version x64. Lorsque vous compilez pour la première fois, utilisez Visual Studio 2012. Avec cette version, vous n'avez pas besoin d'installer tout ce qui est mentionné ci-dessus. Vous pouvez voir cet exemple pour savoir si cela fonctionne vraiment: http://sourceforge.net/projects/emgufacerecog/

0
user2497814

Vous pouvez télécharger la source EmguCV de GIT et la compiler, je l’ai fait et cela fonctionne:

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

Il génère une version non-GPU de dlls

Cordialement.

0
acandaldev