web-dev-qa-db-fra.com

OpenCV - DLL manquant, mais ce n'est pas?

J'essaie juste un programme de base avec OpenCV avec le code suivant:

#include "cv.h"
#include "highgui.h"

int main()
{
    IplImage* newImg;
    newImg = cvLoadImage("~/Apple.bmp", 1);
    cvNamedWindow("Window", 1);
    cvShowImage("Window", newImg);
    cvWaitKey(0);
    cvDestroyWindow("Window");
    cvReleaseImage(&newImg);
    return 0;
}

Quand je lance ceci, je reçois 

Le programme ne peut pas démarrer car libcxcore200.dll est absent de votre fichier ordinateur. Essayez de réinstaller le fichier programme pour résoudre ce problème.

Cependant, je peux voir cette DLL. Ça existe. J'ai ajouté ce qui suit aux dépendances d'entrée de mon éditeur de liens

C:\OpenCV2.0\lib\libcv200.dll.a C:\OpenCV2.0\lib\libcvaux200.dll.a C:\OpenCV2.0\lib\libcxcore200.dll.a C:\OpenCV2.0\lib\libhighgui200.dll.a

Ce qui donne? J'utilise Visual Studio 2008.

Lorsque je lie les fichiers .dll au lieu des fichiers .dll.a, je reçois 

erreur fatale LNK1107: invalide ou corrompu fichier: impossible de lire à 0x3F8 libcv200.dll

32
charles-22

J'ai suivi les instructions sur http://opencv.willowgargarage.com/wiki/VisualC%2B%2B_VS2010 mais je suis resté bloqué sur exactement le même problème. Voici comment je l'ai résolu. 

  1. Récupération de l'édition MSVC 2010 Express.

  2. Récupéré les binaires Win 32 OpenCV 2.2 et installé à l'emplacement par défaut.

  3. Créé nouveau projet.

  4. Configuration du projet

    Projet -> Propriétés OpenCV_Helloworld ... Propriétés de configuration -> Répertoires VC++ 

    Inclure les répertoires ... ajouter: C:\OpenCV2.2\include\;

    Répertoires de bibliothèque ... ajouter: C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;

    Répertoires sources ... ajouter:

    C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\contrib\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src;
    

    Éditeur de liens -> Entrée -> Dépendances supplémentaires ...

    Pour les versions de débogage ... ajoutez: 

    opencv_calib3d220d.lib;opencv_contrib220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib;
    

À ce stade, je pensais avoir terminé, mais j'ai rencontré le problème que vous avez décrit lors de l'exécution de l'exe en mode débogage. La dernière étape est évidente une fois que vous le voyez, sélectionnez:

Éditeur de liens -> Général ... Définissez 'Utiliser les entrées de dépendance de la bibliothèque' sur 'Oui'

J'espère que cela t'aides.

23
skoeberl

Ajoutez simplement C:\OpenCV2.0\bin dans votre variableCHEMINenvironnement 

ou 

Lorsque vous installez OpenCV, 

Choisissez l'option, Add OpenCV to the system PATH for current user qui n'est pas celle par défaut

16
YOU

Juste pour votre information, après avoir ajouté le "PATH", pour mon win7, je dois le redémarrer pour que cela fonctionne.

14
Steven Du

Dans Visual Studio 2013, vous devez ajouter ceci au Environment Variables puis au Restart de votre ordinateur. C’est le chemin où se trouve le fichier .dll.

enter image description here

6
Sabri Meviş

J'ai eu de nombreux problèmes d'openv et n'ai réussi qu'après 4 à 6 mois d'horreur. C'est le dernier problème que j'ai eu, mais tout ce qui précède n'a pas fonctionné. Ce qui a fonctionné pour moi a été de simplement copier-coller opencv_core2 * .dll (et opencv_highgui2 * .dll qu’il demandera puisque vous avez également inclus cela) dans le dossier de publication (ou de débogage - je suppose. ) du dossier de votre projet, où se trouve votre fichier d’application.

J'espère que cela t'aides!

6
Opencv_newbie

Vous devez simplement ajouter le dossier du ou des fichiers dll nécessaires à votre système "Variables d'environnement" dans "Chemin" . Votre problème sera résolu à 100% J'ai eu ce problème également.

4
Farzan

ouvrez simplement le dossier bin, copiez et collez les fichiers .dll dans le dossier sur lequel vous travaillez .. cela devrait régler le problème.

1
somebody

Cela pourrait être comme ressusciter un cheval mort. Mais pour que ce soit le cas, la raison pour laquelle la réponse à ce type de questions consiste simplement à placer des dll dans le dossier system32 est que ce dossier se trouve dans le chemin système de l'OS. 

Il est en fait préférable de fournir au système d'exploitation un lien de chemin.

Avec fenêtres 10

  1. ouvrir l'explorateur de fichiers
  2. clic droit sur "ce pc" et sélectionnez "propriétés"
  3. Maintenant, dans la fenêtre "Panneau de configuration\Système et sécurité\Système" qui apparaît, cliquez sur "Paramètres système avancés" dans le panneau de gauche.
  4. Au bas de la fenêtre suivante, cliquez sur le bouton "Variables d'environnement".
  5. Dans la fenêtre suivante, il y a deux panneaux, le premier concerne la modification des variables pour l'utilisateur actuel et le panneau inférieur, la modification des variables pour le système. Sur le panneau inférieur, recherchez la variable "Path" et cliquez dessus pour la sélectionner, puis cliquez sur le bouton "éditer".
  6. Vous pouvez ensuite créer, éditer, supprimer ou mettre à jour les différents chemins du système. Par exemple, pour ajouter mingw32-make au système afin que vous puissiez accéder à cette commande via Invite de commande, cliquez sur Nouveau, puis collez le chemin d'accès à la corbeille. Exemple de chemin, "D:\Qt\Tools\mingw730_64\bin", sans guillemets ni espaces blancs supplémentaires.
  7. Cliquez sur OK dans toutes les fenêtres pour enregistrer les modifications, puis sur redémarrez votre ordinateur pour que les modifications soient chargées.

vous pouvez trouver opencv_core248 et d’autres dll dans le dossier opencv\build\x86\vc12\bin. Copiez simplement les dll dont vous avez besoin dans le dossier system32. Et votre application devrait commencer à fonctionner en un éclair! J'espère que ça aide.

0
phoenix

En ce qui concerne la réponse de @ Marc, je ne pense pas que VC utilise le chemin depuis le système d'exploitation. Avez-vous ajouté le chemin d'accès aux chemins de bibliothèque de VC? J'ajoute généralement les DLL au projet et les copie si elles sont plus récentes dans la construction et cela fonctionne très bien pour moi.

0
kenny