Donc mon cas est un cas délicat.Python cv2 problèmes de liaison tout en rétrogradant OpenCV de 3.0.0 à 2.4.11
J'ai d'abord installé OpenCV2.4.8 et l'ai démarré avec python2.7. Plus tard, j'ai prévu de migrer vers OpenCV3.0.0. Les deux fois pendant l'installation j'ai suivi la procédure de documentation officielle. Tout fonctionnait bien jusqu'à ce que je réalise que OpenCV3 n'a pas de modules SIFT()
et SURF()
. Après un peu de recherche, j'ai trouvé qu'ils sont présents dans opencv_contrib. J'ai d'abord essayé d'installer ça mais pour une raison quelconque je ne pouvais pas.
Plus tard, j'ai trouvé que ces modules sont présents dans OpenCV2.4.11 et ont prévu d'installer cela. Encore une fois en suivant la procédure officielle, j'ai installé OpenCV2.4.11 a obtenu le même SIFT()
importerror. Lors de la vérification de la OpenCV __version__
dans python2 et python3 j'ai trouvé le
- python2: "2.4.8"
- python3: "3.0.0"
Pour vérifier la version je les suivantes Code:
from cv2 import __version__
print(__version__)
Malheureusement je n'ai pas beaucoup de mémoire dans /home
, donc j'avais supprimé construire OpenCV2.4.8 et OpenCV3.0.0 dossiers après l'installation. Par conséquent, j'ai essayé de supprimer manuellement OpenCV2.4.8 et OpenCV3.0.0 et supprimé toutes les libs opencv de /usr/local/libs/
et sous-répertoires et tous les bacs opencv de /usr/local/bins/
(suite à la réponse dans ce question). Après la suppression de tous les fichiers opencv, j'ai de nouveau réinstallé OpenCV2.4.11 et essayé d'exécuter mon code. Il a échoué à l'étape d'importation python2 donnant
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
dans python3
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libopencv_core.so.3.0: cannot open shared object file: No such file or directory
J'ai vérifié à nouveau si OpenCV2.4.11 est présent ou non et son là, mais le python n'a pas encore actualisé le lien précédemment enregistré à opencv lib. Je suis coincé à cette erreur depuis 2 jours sans solution. Toute aide serait appréciée.
EDIT: est-il un fichier de recherche de bibliothèque qui utilise python pour stocker tous les emplacements des bibliothèques partagées? Sinon, comment cela fonctionne (comment python reconnaît où chercher OpenCV comme OpenCV ne figure pas dans pip freeze
)
EDIT2: J'ai trouvé une autre erreur. Je n'avais pas activé -D BUILD_SHARED_LIBS=ON
auparavant. Cette fois, je l'ai gardé ON
et rand sudo ldconfig
après make
et make install
. Maintenant, j'ai un libopencv_core.so.2.4
dans mon /usr/local/lib/
. C'est un lien symbolique vers libopencv_core.so.2.4.11
présent dans le même dossier. Après ldconfig
lorsque j'ai vérifié pour python2 import cv2
n'a pas montré d'erreur, mais __version__
montre encore '2.4.8'
. J'ai vérifié deux fois pour n'importe quel fichier OpenCV2.4.8 .so et il n'y en a aucun. Comment est-ce qu'il pointe toujours vers la version '2.4.8'
?