2011-05-20 3 views
1

Lorsque je tente de compiler un programme C++ qui utilise la bibliothèque OpenCV dans CodeBlocks il me donne une erreur d'exécution:erreurs d'exécution lors du codage des programmes OpenCV utilisant codeblocks dans linux

error while loading shared libraries: libopencv_calib3d.so.2.2: 
cannot open shared object file: no such file or directory 

Ceci en dépit du fait que J'ai ajouté toutes les bibliothèques requises en utilisant les paramètres du linker pour l'IDE de blocs de code (y compris celui nommé libopencv_calib3d.so.2.2 qui est un lien symbolique).

Cependant, je suis en mesure de compiler le programme en utilisant la ligne de commande en exécutant la commande:

g++ hello-world.cpp -o hello-world \ 
     -I /usr/local/include/opencv -L /usr/local/lib 
     \ -lm -lcv -lhighgui -lcvaux 

quelqu'un peut me conseiller sur la façon dont je peux obtenir pour exécuter les mêmes à l'aide de blocs de code.

Merci!

Répondre

2

Le fichier libopencv_calib3d.so.2.2 fait partie d'OpenCV 2.2. Il n'y a cependant pas de libcv, libhighgui ou libcvaux dans OpenCV 2.2. Cela signifie que vos liens d'appel g ++ contre une autre version d'OpenCV.

Pour lier avec OpenCV 2.2, vous aurez besoin de drapeaux comme -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann.

Vous ne devriez pas les mettre manuellement, mais au lieu d'utiliser

export PKG_CONFIG_PATH=/usr/local/share/opencv/:$PKG_CONFIG_PATH 
g++ `pkg-config --cflags --libs opencv` hello-world.cpp -o hello-world 
+0

Merci! mais je pense que les drapeaux ont fonctionné pour moi manuellement quand j'ai utilisé g ++. Cependant, j'essaie de compiler mon code en utilisant IDE codeblocks. Alors est-il possible d'associer définitivement libcv, libhighgui, libcvaux etc avec OpenCV 2.2 dans CodeBlocks? –

+0

Non, car ces bibliothèques ne font pas partie d'OpenCV 2.2 et vous devriez vous en débarrasser! Ils proviennent d'une ancienne version d'OpenCV et ils ne vous causeront des problèmes qu'à long terme. – ypnos

0

Je recommande d'installer une version raisonnablement à jour de OpenCV pour Linux, 2.4.9 par exemple, à ce moment de écriture, semble construire avec la version actuelle de gcc que j'ai (4.8.2). Vous devez effectuer quelques étapes pour obtenir un simple exemple OpenCV dans Code :: Blocks. La documentation OpenCV vous demande de créer un répertoire de construction dans votre répertoire racine OpenCV et d'exécuter cmake, make, sudo make install etc afin de générer les librairies que votre projet devra lier, y compris le libopencv_calib3d.so vous mentionnez:

enter image description here

Ce blog annonce donne des explications sur la façon d'installer OpenCV et configurer son utilisation pour code :: Blocks dans les environnements Linux Ubuntu:

http://www.technical-recipes.com/2014/using-opencv-in-codeblocks-in-linux/

Questions connexes