openCV programme erreur de compilation “libopencv_core.donc.2.4: cannot open shared object file: No such file or directory” dans ubuntu 12.04
J'ai compilé et installé openCV 2.4.2 dans ubuntu 12.04. En vertu de /usr/local/include
je peux voir les répertoires /usr/local/opencv
et /usr/local/opencv2
.
Voici le code que j'ai écrit:
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc,char **argv)
{
Mat image;
image = imread(argv[1],1);
if(argc != 2 || !image.data)
{
cout << "No image data\n";
return -1;
}
namedWindow("Display Image",CV_WINDOW_AUTOSIZE);
imshow("Display Image",image);
waitKey(0);
return 0;
}
J'ai compilé à l'aide de cette ligne de commande:
g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs`
Il n'y avait aucun moment de la compilation des erreurs, cependant lorsque j'essaie d'exécuter le binaire résultant avec /DisplayImage code.png
je reçois le message d'erreur suivant:
./DisplayImage: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
- Logiquement libopencv_core.donc.2.4 devrait être dans /usr/local/lib, vous pouvez le trouver là-bas?
- Inclure le chemin d'accès, où vous opencv-et donc les fichiers sont situés dans le LD_LIBRARY_PATH. (ou ldconfig <opsncv-libs> peut aussi aider)
- Je viens de laisser ici un commentaire. J'ai eu le même problème
sudo apt-get update
etsudo apt-get upgrade
résoudre mon problème.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas mis la bibliothèque partagée dans un endroit où le chargeur peut le trouver. regardez à l'intérieur de la
/usr/local/opencv
et/usr/local/opencv2
dossiers et voir si l'un d'eux contient les bibliothèques partagées (les fichiers commençant danslib
et se terminant habituellement dans.so
). lorsque vous les trouvez, créez un fichier appelé/etc/ld.so.conf.d/opencv.conf
et écrire les chemins vers les dossiers où les bibliothèques sont stockées, un par ligne.par exemple, si les bibliothèques étaient entreposés sous
/usr/local/opencv/libopencv_core.so.2.4
ensuite je voudrais écrire à monopencv.conf
fichier:Puis exécutez
Si vous ne pouvez pas trouver les bibliothèques, essayez d'exécuter
dans un shell. Vous n'avez pas besoin d'exécuter
updatedb
si vous avez redémarré depuis compiler OpenCV.Références:
Sur les bibliothèques partagées sur Linux: http://www.eyrie.org/~eagle/notes/rpath.html
Sur l'ajout de la OpenCV bibliothèques partagées: http://opencv.willowgarage.com/wiki/InstallGuide_Linux
dpkg -l | grep opencv
et puissudo apt-get remove --purge libopencv4tegra
pour les Jetson TK1Pour le rendre plus clair(et de les mettre ensemble) j'ai eu à faire Deux choses mentionnées ci-dessus.
1 - Créer un fichier
/etc/ld.so.conf.d/opencv.conf
et écrire les chemins d'accès du dossier où votre opencv bibliothèques sont stockées.(Réponse par Cookyt)2 - Inclure le chemin d'accès de votre opencv est
.so
fichiers dans LD_LIBRARY_PATH ()Oumayr R la réponse est la plupart du temps le droit de se déplacer pour résoudre le problème, car cette erreur utilisé pour être causés par le manque de liens entre opencv libs et le programme. donc, il est nécessaire de spécifier le ld_libraty_path de configuration.
ps. l'habituel chemin de la bibliothèque est supposé être:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
J'ai essayé et ça a bien fonctionné.
/home/myhome/anaconda3/envs/py27/lib
Trouver le dossier contenant la bibliothèque partagée libopencv_core.donc.2.4 à l'aide de la ligne de commande suivante.
Puis j'ai obtenu le résultat:
Créer un fichier appelé
/etc/ld.so.conf.d/opencv.conf
et écrire le chemin d'accès au dossier où le fichier binaire est stocké.Par exemple, j'ai écrit
/usr/local/lib/
à monopencv.conf
fichier.Exécutez la ligne de commande comme suit.
Essayez d'exécuter à nouveau la commande.
/usr/local/lib/
, mais j'ai eu la même erreur que l'OP. Tout ce que j'avais à faire était de courirsudo ldconfig -v
, je n'ai pas besoin de créer de la/etc/ld.so.conf.d/opencv.conf
(en raison de la bibliothèque a été installée).Ajouter ce lien:
Le total est de: