Guide OpenCV 3.0 Python

Introduction et aperçu

Ce document contient des instructions pour l’installation et la migration vers la dernière version d’OpenCV (version 3) et les liaisons Python. En plus de certains changements d’API, il y a également des changements dans l’interface Python (par exemple, la suppression de cv2.cv) qui peuvent nécessiter des modifications dans le code existant pour fonctionner avec la nouvelle version du module cv2. Après l’installation, consultez la page suivante, Migration & Changements, pour obtenir des détails concernant les changements apportés au module et pour obtenir de l’aide pour migrer le code Python existant vers la nouvelle version.

Cette page couvre l’installation d’OpenCV 3 sur Windows (en utilisant des binaires pré-construits) et Linux (compilé à partir des sources), y compris l’interface Python (le module cv2). OpenCV peut être téléchargé depuis le site officiel d’OpenCV. Notez que ce guide est écrit sur la base de la version 3.1.0 d’OpenCV. Après l’installation, il est recommandé de pouvoir vérifier la version d’OpenCV que Python utilise :

import cv2print cv2.__version__# Should print 3.0.0-rc1 or newer.

Notez que bien qu’OpenCV 3 soit la dernière version, par convention, le module est toujours nommé cv2.

Installation sur Windows (binaires préconstruits)

L’utilisation de binaires préconstruits est le moyen le plus rapide d’obtenir un environnement Python OpenCV opérationnel sur Windows. Actuellement, seule la version Python 2 du module cv2 est construite et incluse dans la dernière version Windows. Le support de Python 3 (ainsi que l’ajout d’autres fonctionnalités/modules non standard), nécessite une compilation à partir des sources – voir la documentation officielle d’OpenCV pour plus de détails.

Downloading OpenCV and Python

Pour commencer, téléchargez OpenCV pour Windows (version 3.1, opencv-3.1.0.exe), et extrayez-le dans un répertoire de votre choix. La build Windows comprend à la fois un module 32 bits et 64 bits pour Python 2.7.

Avant de continuer, assurez-vous que vous avez une installation Python 2.7 fonctionnelle, qui peut être téléchargée sur le site Web de Python. Ce guide a été testé en utilisant Python 2.7.9 (installateur x86 / installateur x64). Lors de l’installation, il est recommandé de permettre à l’installateur d’ajouter Python à votre variable d’environnement PATH, afin que vous puissiez exécuter python et pip à partir d’une invite de commande.

Installation des dépendances du module

Le module Python OpenCV cv2 nécessite à la fois la pile NumPy et SciPy. Pour l’obtenir, assurez-vous d’abord que vous avez un environnement python fonctionnel, et que pip est installé (si ce n’est pas le cas, utilisez les liens ci-dessus, et assurez-vous que le dossier Python se trouve dans votre variable PATH).

Christoph Gohlke fournit actuellement quelques paquets Python préconstruits (non officiels) pour Windows, notamment NumPy et SciPy. Téléchargez les dernières versions stables de NumPy et SciPy, et installez-les en appelant pip install .whl depuis une invite de commande. Notez que vous devez télécharger la version correspondant à votre environnement Python (2.7 dans ce cas) et à la longueur des mots. Par exemple, sur les systèmes/interprètes 32 bits :

pip install numpy-1.9.2+mkl-cp27-none-win32.whlpip install scipy-0.15.1-cp27-none-win32.whl

Et pour les systèmes/interprètes 64 bits :

pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whlpip install scipy-0.15.1-cp27-none-win_amd64.whl

Après l’installation, vous devriez pouvoir exécuter import numpy et import scipy à partir d’un interpréteur Python pour vérifier que les modules ont été installés correctement. Vous pouvez vérifier quelles versions de NumPy et SciPy sont installées depuis numpy.__version__ et scipy.__version__, respectivement.

Installation du module Python-OpenCV

En dernier lieu, nous devons copier le module OpenCV dans les paquets Python locaux. Dans les fichiers extraits de opencv-3.0.0-rc1.exe, allez dans le dossier opencv\build\python.7\, et ouvrez soit le dossier x86\ (pour 32 bits) ou x64\ (pour 64 bits). Dans chacun, il y aura un fichier cv2.pyd.

Copiez cv2.pyd directement dans le répertoire Lib\site-packages\ de votre installation Python. Pour la plupart des utilisateurs, ce répertoire se trouvera à :

C:\Python27\Lib\site-packages 

Enfin, assurez-vous que les fichiers OpenCV .dll se trouvent quelque part dans le %PATH% de votre système, en particulier le fichier opencv_ffmpeg310.dll (ou opencv_ffmpeg310_64.dll pour les systèmes 64 bits) nécessaire au chargement des fichiers vidéo.

Poursuivez à la section Vérification de l’installation pour vous assurer que tout a été installé correctement et que la nouvelle version d’OpenCV est utilisée. Veillez également à consulter la page suivante, Migration &Modifications, pour obtenir des détails sur les modifications apportées au module et la mise à jour du code existant.

Installation sur Linux (compilation à partir des sources)

Bien que ce guide soit écrit pour Ubuntu 12.04/14.04 et d’autres variantes (par exemple Xubuntu/Lubuntu/Kubuntu), le processus devrait en grande partie être le même sur d’autres versions, ainsi que sur des distributions Linux similaires à Debian. Faites attention à la sortie de chaque commande pour vous assurer que tout a fonctionné correctement, et s’il y a des problèmes pendant le processus de construction, consultez le bas de ce document pour les atténuations possibles

Downloading OpenCV

Pour commencer, téléchargez OpenCV pour Linux (version 3.1.0, opencv-3.1.0.zip), et extrayez-le dans un répertoire de votre choix (par exemple ~/opencv-src). Créez un dossier build à l’intérieur du dossier où l’archive a été extraite (le répertoire contenant le fichier CMakeLists.txt), et ouvrez-y une session de terminal. Par exemple :

# Assuming the files were extracted to ~/opencv-src/...cd ~/opencv-srcmkdir buildcd build

Exécutez toutes les commandes suivantes à partir du sous-dossier build lui-même, afin que les fichiers compilés y soient placés.

Installation des dépendances de construction

Pour compiler OpenCV, nous devons nous assurer que les dépendances requises sont disponibles, y compris les outils de construction eux-mêmes. Nous pouvons obtenir celles requises en utilisant apt sur Ubuntu, mais d’abord, assurez-vous que la liste des paquets est à jour en exécutant apt-get update. Ensuite, exécutez les commandes suivantes pour obtenir les paquets requis (voir ci-dessous pour une liste en une ligne de tous):

sudo apt-get install cmake build-essential pkg-configsudo apt-get install libgtk2.0-dev libtbb-devsudo apt-get install python-dev python-numpy python-scipysudo apt-get install libjasper-dev libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev libswscale-devsudo apt-get install libdc1394-22-dev libv4l-dev

En une seule ligne:

sudo apt-get install cmake build-essential pkg-config libgtk2.0-dev libtbb-dev python-dev python-numpy python-scipy libjasper-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libdc1394-22-dev libv4l-dev

Notez que pour les modules/fonctionnalités supplémentaires d’OpenCV (par exemple le support GPU/CUDA, ou le module Python 3), vous devrez télécharger les paquets de développement/SDK respectifs pour ces bibliothèques également. Les dépendances listées ci-dessus ne couvrent que la construction d’OpenCV lui-même et du module Python 2.7 cv2.

Compilation et installation d’OpenCV

Maintenant que nous avons les dépendances de construction requises, exécutez cmake (encore une fois, dans le répertoire build/ que nous avons créé) pour générer le Makefile pour construire OpenCV:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

S’il y a des erreurs, assurez-vous que vous avez téléchargé tous les paquets requis – la sortie devrait aider à trouver ce qui manque. Pour vous assurer que le module Python sera construit, vous devriez voir python2 dans la liste des modules configurés après avoir exécuté cmake:

-- Linker flags (Release):-- Linker flags (Debug):-- Precompiled headers: YES---- OpenCV modules:-- To be built: hal core flann imgproc ml python2

Si vous ne voyez pas le module python2 listé, dans la liste “À construire”, vérifiez que vous avez les paquets de développement Python appropriés installés, supprimez tous les fichiers du dossier build/, et essayez d’exécuter à nouveau la commande cmake.

Maintenant, nous pouvons construire OpenCV (et le module Python) en utilisant make, et l’installer sur notre système :

makesudo make install

Assurez-vous que la construction a réussi après avoir appelé make, et vérifiez la sortie avant l’installation. Si vous rencontrez des problèmes/erreurs de compilation, assurez-vous à nouveau que vous avez toutes les dépendances et tous les fichiers d’en-tête requis sur votre système. S’il y a des problèmes de compilation réels avec OpenCV lui-même, consultez la section Linux Build Issues ci-dessous pour quelques solutions de contournement possibles.

Lors de l’installation d’OpenCV 3.0-rc1 sur Ubuntu 12.04, j’ai rencontré des erreurs de compilation concernant certaines entrées #define de codecs manquantes. Comme mentionné, les étapes pour le faire sont détaillées ci-dessous si vous rencontrez le même problème (le problème devrait être résolu dans la version 3.1.0 et plus). Ubuntu 14.04 et plus devrait construire avec succès sans nécessiter de modifications.

Si la construction a réussi, mais que vous ne pouvez pas import cv2 à partir d’un shell Python après avoir exécuté make install, vous pouvez installer le module manuellement en copiant le fichier cv2.so que nous venons de construire dans le dossier build/lib/ vers /usr/local/lib/python2.7/dist-packages/. Depuis le dossier build/, cela peut être fait par :

sudo cp lib/cv2.so /usr/local/lib/python2.7/dist-packages/

Après cette étape, le module cv2 est installé, et peut maintenant être importé par votre environnement Python. Passez à la section Vérification de l’installation pour vous assurer que tout a été installé correctement, et surtout, que la bonne version d’OpenCV est utilisée par Python. Vous pouvez également consulter la page suivante, Migration & Changes, pour obtenir des détails sur les changements apportés au module cv2, et sur les modifications à apporter au code existant pour fonctionner avec le module mis à jour.

Vérification de l’installation

Comme mentionné précédemment, vous pouvez vérifier que le module cv2 a été installé correctement en exécutant ce qui suit dans un shell Python :

import cv2print cv2.__version__

Si la chaîne de version correcte est imprimée (3.0.0-rc1 ou plus récente si vous avez utilisé une version plus récente), tout est installé correctement à ce stade !

Notez qu’il y a quelques changements majeurs dans la hiérarchie des modules cv2 elle-même, et les programmes Python écrits avec OpenCV 2.4.x en tête peuvent ne plus fonctionner correctement. Voir la section suivante, Migration & Changements pour plus de détails sur les changements, et comment modifier les programmes pour faire face aux changements.

Linux Build Issues

Sur certains systèmes, vous pouvez rencontrer des problèmes lors de la compilation d’OpenCV lui-même, selon les paquets disponibles. Si les fichiers d’en-tête appropriés sont disponibles, mais que des problèmes de compilation surviennent toujours, essayez de voir s’il existe des solutions de contournement ci-dessous pour le problème.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Si vous rencontrez un problème où les erreurs de compilation sont causées par certains codecs non définis, vous pouvez télécharger une version plus récente de ffmpeg_codecs.hpp à partir d’ici, et la remplacer dans le code source que vous avez téléchargé/extrait dans le dossier modules/videoio/src/.

Alternativement, vous pouvez les déclarer manuellement en éditant le fichier ffmpeg_codecs.hpp lui-même en ajoutant l’entrée de codec manquante pour H263I, et en renommant WNV en WNV1. Vous pouvez voir quelles modifications doivent être apportées en consultant ce commit du projet OpenCV GitHub.

Une fois que le fichier est mis à jour, vous pouvez appeler make à nouveau depuis le dossier build/, et OpenCV devrait terminer la compilation sans erreur maintenant.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.