OpenCV collecte des fonds pour que la bibliothèque reste gratuite pour tous, et nous avons besoin du soutien de l'ensemble de la communauté pour y parvenir. Faites un don à OpenCV sur Github pour montrer votre soutien.
Packages OpenCV pré-construits pour Python uniquement pour le processeur.
Consultez la section de construction manuelle si vous souhaitez compiler les liaisons à partir des sources pour activer des modules supplémentaires tels que CUDA.
Si vous avez une version précédente/autre installée manuellement (= non installée via pip
) d'OpenCV (par exemple le module cv2 à la racine des packages de site de Python), supprimez-la avant l'installation pour éviter les conflits.
Assurez-vous que votre version pip
est à jour (19.3 est la version minimale prise en charge) : pip install --upgrade pip
. Vérifiez la version avec pip -V
. Par exemple, les distributions Linux sont généralement livrées avec de très anciennes versions pip
ce qui provoque de nombreux problèmes inattendus, notamment avec le format manylinux
.
Sélectionnez le package approprié pour votre environnement :
Il existe quatre forfaits différents (voir les options 1, 2, 3 et 4 ci-dessous) et vous ne devez en sélectionner qu'un seul . N'installez pas plusieurs packages différents dans le même environnement. Il n'y a pas d'architecture de plugin : tous les packages utilisent le même espace de noms ( cv2
). Si vous avez installé plusieurs packages différents dans le même environnement, désinstallez-les tous avec pip uninstall
et réinstallez un seul package.
un. Packages pour les environnements de bureau standard (Windows, macOS, presque toutes les distributions GNU/Linux)
pip install opencv-python
pip install opencv-contrib-python
(vérifiez la liste des modules contrib/extra dans la documentation OpenCV)b. Packages pour environnements de serveur (sans tête) (tels que Docker, environnements cloud, etc.), aucune dépendance de bibliothèque GUI
Ces packages sont plus petits que les deux autres packages ci-dessus car ils ne contiennent aucune fonctionnalité GUI (non compilés avec Qt/autres composants GUI). Cela signifie que les packages évitent une lourde chaîne de dépendance aux bibliothèques X11 et vous obtiendrez par exemple des images Docker plus petites. Vous devez toujours utiliser ces packages si vous n'utilisez pas cv2.imshow
et al. ou vous utilisez un autre package (tel que PyQt) qu'OpenCV pour créer votre interface graphique.
pip install opencv-python-headless
pip install opencv-contrib-python-headless
(vérifiez la liste des modules contrib/extra dans la documentation OpenCV)Importez le package :
import cv2
Tous les packages contiennent des fichiers en cascade Haar. cv2.data.haarcascades
peut être utilisé comme raccourci vers le dossier de données. Par exemple:
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
Lire la documentation OpenCV
Avant d'ouvrir un nouveau numéro, lisez la FAQ ci-dessous et jetez un œil aux autres numéros déjà ouverts.
Q : Dois-je également installer OpenCV séparément ?
R : Non, les packages sont des packages binaires spéciaux wheel et ils contiennent déjà des binaires OpenCV construits de manière statique.
Q : L'installation de Pip échoue avec ModuleNotFoundError: No module named 'skbuild'
?
Depuis la version 4.3.0.* opencv-python
, manylinux1
roues Linux1 ont été remplacées par manylinux2014
roues Linux2014. Si votre pip est trop ancien, il essaiera d'utiliser la nouvelle distribution source introduite dans la version 4.3.0.38 pour construire manuellement OpenCV car il ne sait pas comment installer manylinux2014
roues Linux2014. Cependant, la construction des sources échouera également en raison d' pip
trop ancien, car il ne comprend pas les dépendances de construction dans pyproject.toml
. Pour utiliser les nouvelles roues pré-construites manylinux2014
(ou pour construire à partir des sources), votre version pip
doit être >= 19.3. Veuillez mettre à niveau pip
avec pip install --upgrade pip
.
Q : L'importation échoue sous Windows : ImportError: DLL load failed: The specified module could not be found.
?
R : Si l’importation échoue sous Windows, assurez-vous que Visual C++ redistribuable 2015 est installé. Si vous utilisez une version de Windows antérieure à Windows 10 et que les dernières mises à jour du système ne sont pas installées, Universal C Runtime peut également être requis.
Les éditions Windows N et KN n'incluent pas Media Feature Pack qui est requis par OpenCV. Si vous utilisez l'édition Windows N ou KN, veuillez également installer Windows Media Feature Pack.
Si vous disposez de Windows Server 2012+, les DLL multimédias sont probablement également manquantes ; veuillez installer la fonctionnalité appelée « Media Foundation » dans le gestionnaire de serveur. Attention, certains posts conseillent d'installer "Windows Server Essentials Media Pack", mais celui-ci nécessite le rôle "Windows Server Essentials Experience", et ce rôle affectera profondément votre configuration Windows Server (en appliquant l'intégration d'Active Directory etc.) ; donc le simple fait d'installer "Media Foundation" devrait être un choix plus sûr.
Si ce qui précède ne vous aide pas, vérifiez si vous utilisez Anaconda. Les anciennes versions d'Anaconda ont un bug qui provoque l'erreur, consultez ce problème pour une correction manuelle.
Si vous rencontrez toujours l'erreur après avoir vérifié toutes les solutions précédentes, téléchargez les dépendances et ouvrez le cv2.pyd
(situé généralement dans C:UsersusernameAppDataLocalProgramsPythonPythonXXLibsite-packagescv2
) avec celui-ci pour déboguer les problèmes de DLL manquants.
Q : J'ai d'autres erreurs d'importation ?
R : Assurez-vous d'avoir supprimé les anciennes installations manuelles des liaisons OpenCV Python (cv2.so ou cv2.pyd dans les packages de site).
Q : La fonction foo() ou la méthode bar() renvoie un résultat erroné, lève une exception ou plante l'interpréteur. Que dois-je faire?
R : Le référentiel contient uniquement les scripts de construction du package OpenCV-Python, mais pas OpenCV lui-même. Les liaisons Python pour OpenCV sont développées dans le référentiel officiel OpenCV et constituent le meilleur endroit pour signaler les problèmes. Veuillez également consulter le wiki OpenCV et le forum officiel OpenCV avant de déposer de nouveaux bogues.
Q : Pourquoi les packages n'incluent-ils pas d'algorithmes non libres ?
R : Les algorithmes non libres tels que SURF ne sont pas inclus dans ces packages car ils sont brevetés/non libres et ne peuvent donc pas être distribués sous forme de binaires construits. Notez que SIFT est inclus dans les versions en raison de l'expiration du brevet depuis les versions 4.3.0 et 3.4.10 d'OpenCV. Voir ce numéro pour plus d'informations : #126
Q : Pourquoi le package et l'importation sont différents (opencv-python vs cv2) ?
R : Il est plus facile pour les utilisateurs de comprendre opencv-python
que cv2
et cela facilite la recherche du package avec les moteurs de recherche. cv2
(l'ancienne interface des anciennes versions d'OpenCV était nommée cv
) est le nom que les développeurs d'OpenCV ont choisi lorsqu'ils ont créé les générateurs de liaison. Ceci est conservé comme nom d'importation pour être cohérent avec les différents types de didacticiels sur Internet. Changer le nom ou le comportement de l'importation serait également déroutant pour les utilisateurs expérimentés habitués à l' import cv2
.
L'objectif de ce référentiel est de fournir les moyens de conditionner chaque nouvelle version d'OpenCV pour les versions et plates-formes Python les plus utilisées.
Le projet est structuré comme un package Python normal avec un fichier setup.py
standard. Le processus de construction pour une seule entrée dans les matrices de construction est le suivant (voir par exemple le fichier .github/workflows/build_wheels_linux.yml
) :
Dans la version Linux et MacOS : obtenez les dépendances C facultatives d'OpenCV avec lesquelles nous compilons
Dépôt de paiement et sous-modules
Trouver la version d'OpenCV à partir des sources
Construire OpenCV
Réorganisez le résultat de construction d'OpenCV, ajoutez nos fichiers personnalisés et générez une roue
Les roues Linux et macOS sont transformées avec auditwheel et délocalisées, en conséquence
Installer la roue générée
Testez que Python peut importer la bibliothèque et exécuter des vérifications d'intégrité
Utilisez Twine pour télécharger la roue générée sur PyPI (uniquement dans les versions finales)
Les étapes 1 à 4 sont gérées par pip wheel
.
La construction peut être personnalisée avec des variables d'environnement. En plus de toutes les variables acceptées par la construction d'OpenCV, nous reconnaissons :
CI_BUILD
. Définissez sur 1
pour émuler le comportement de création de l’environnement CI. Utilisé uniquement dans les builds CI pour forcer certains indicateurs de build dans setup.py
. Ne l'utilisez pas à moins de savoir ce que vous faites.ENABLE_CONTRIB
et ENABLE_HEADLESS
. Mis à 1
pour construire la version contrib et/ou headlessENABLE_JAVA
, défini sur 1
pour activer la génération du client Java. Ceci est désactivé par défaut.CMAKE_ARGS
. Arguments supplémentaires pour l’invocation CMake d’OpenCV. Vous pouvez l'utiliser pour créer une version personnalisée.Consultez la section suivante pour plus d’informations sur les builds manuelles en dehors de l’environnement CI.
Si certaines dépendances ne sont pas activées dans les roues prédéfinies, vous pouvez également exécuter la construction localement pour créer une roue personnalisée.
git clone --recursive https://github.com/opencv/opencv-python.git
cd opencv-python
git
pour récupérer une autre version d'OpenCV dans les sous-modules opencv
et opencv_contrib
si nécessaireexport CMAKE_ARGS="-DSOME_FLAG=ON -DSOME_OTHER_FLAG=OFF"
(sous Windows, vous devez définir les variables d'environnement différemment en fonction de la ligne de commande ou de PowerShell)ENABLE_CONTRIB
et ENABLE_HEADLESS
: c'est-à-dire export ENABLE_CONTRIB=1
si vous souhaitez construire opencv-contrib-python
pip wheel . --verbose
. REMARQUE : assurez-vous d'avoir la dernière version pip
, la commande pip wheel
remplace l'ancienne commande python setup.py bdist_wheel
qui ne prend pas en charge pyproject.toml
.setup.py
le package wheel sera placé dans le dossier dist
. Le paquet est prêt et vous pouvez en faire ce que vous voulez.manylinux
images Linux comme hôtes de construction si une portabilité maximale est nécessaire et exécutez auditwheel
pour la roue après la construction.delocate
(identique à auditwheel
mais pour macOS) pour une meilleure portabilité Afin de construire opencv-python
dans une version de débogage non optimisée, vous devez contourner un peu le processus normal.
scikit-build
et numpy
via pip.python setup.py bdist_wheel --build-type=Debug
.dist/
avec pip install dist/wheelname.whl
.Si vous souhaitez que la version produise toutes les commandes du compilateur, alors la combinaison suivante d'indicateurs et de variables d'environnement a été testée pour fonctionner sous Linux :
export CMAKE_ARGS='-DCMAKE_VERBOSE_MAKEFILE=ON'
export VERBOSE=1
python3 setup.py bdist_wheel --build-type=Debug
Voir ce numéro pour plus de discussion : #424
Depuis la version 4.3.0 d'OpenCV, les distributions sources sont également fournies dans PyPI. Cela signifie que si votre système n'est compatible avec aucune des roues de PyPI, pip
tentera de construire OpenCV à partir des sources. Si vous avez besoin d'une version OpenCV qui n'est pas disponible dans PyPI en tant que distribution source, veuillez suivre les instructions de construction manuelle ci-dessus au lieu de celle-ci.
Vous pouvez également forcer pip
à construire les roues à partir de la distribution source. Quelques exemples :
pip install --no-binary opencv-python opencv-python
pip install --no-binary :all: opencv-python
Si vous avez besoin de modules de contribution ou d'une version sans tête, changez simplement le nom du package (l'étape 4 de la section précédente n'est pas nécessaire). Cependant, tous les indicateurs CMake supplémentaires peuvent être fournis via des variables d'environnement comme décrit à l'étape 3 de la section de construction manuelle. Si aucun n'est fourni, les scripts CMake d'OpenCV tenteront de trouver et d'activer toutes les dépendances appropriées. Les distributions sans tête ont des indicateurs CMake codés en dur qui désactivent toutes les dépendances possibles de l'interface graphique.
Sur les systèmes lents tels que Raspberry Pi, la construction complète peut prendre plusieurs heures. Sur un Ryzen 7 3700X à 8 cœurs, la construction prend environ 6 minutes.
Le package Opencv-python (scripts dans ce référentiel) est disponible sous licence MIT.
OpenCV lui-même est disponible sous licence Apache 2.
Les licences de packages tiers se trouvent sur LICENSE-3RD-PARTY.txt.
Toutes les roues sont livrées avec FFmpeg sous licence LGPLv2.1.
Les roues Linux sans tête sont livrées avec Qt 5 sous licence LGPLv3.
Les packages incluent également d'autres binaires. La liste complète des licences est disponible sur LICENSE-3RD-PARTY.txt.
Le script find_version.py
recherche les informations de version à partir des sources OpenCV et ajoute également un numéro de révision spécifique à ce référentiel à la chaîne de version. Il enregistre les informations de version dans le fichier version.py
sous cv2
en plus de certains autres indicateurs.
Une version est créée et téléchargée sur PyPI lorsqu'une nouvelle balise est poussée vers la branche principale. Ces balises différencient les packages (ce dépôt peut avoir des modifications mais la version d'OpenCV reste la même) et doivent être incrémentées séquentiellement. En pratique, les numéros de version ressemblent à ceci :
cv_major.cv_minor.cv_revision.package_revision
par exemple 3.1.0.0
La branche principale suit les versions de la branche principale OpenCV. La branche 3.4 suit les versions de correction de bogues d'OpenCV 3.4.
Chaque commit sur la branche master de ce dépôt sera construit. Les artefacts de build possibles utilisent des identifiants de version locaux :
cv_major.cv_minor.cv_revision+git_hash_of_this_repo
par exemple 3.1.0+14a8d39
Ces artefacts ne peuvent pas être et ne seront pas téléchargés sur PyPI.
Les roues Linux sont construites à l'aide de manylinux2014. Ces roues devraient fonctionner immédiatement pour la plupart des distributions (qui utilisent la bibliothèque standard GNU C) car elles sont construites sur une ancienne version de la glibc.
Les images manylinux2014
par défaut ont été étendues avec certaines dépendances OpenCV. Voir le dossier Docker pour plus d'informations.
Des roues prédéfinies compatibles Python 3.x sont fournies pour les versions Python officiellement prises en charge (pas dans EOL) :
À partir des versions 4.2.0 et 3.4.9, l'environnement de génération macOS Travis a été mis à jour vers XCode 9.4. Le changement a effectivement supprimé la prise en charge des versions macOS antérieures à 10.13.
À partir des versions 4.3.0 et 3.4.10, l'environnement de construction Linux a été mis à jour de manylinux1
vers manylinux2014
. Cela a supprimé la prise en charge des anciennes distributions Linux.
À partir de la version 4.7.0, l'environnement de génération Mac OS GitHub Actions a été mis à jour vers la version 11. La prise en charge de Mac OS 10.x est obsolète. Voir actions/images-coureurs#5583
À partir de la version 4.9.0, l'environnement de construction Mac OS GitHub Actions a été mis à jour vers la version 12. Prise en charge de Mac OS 10.x obsolète par Brew et la plupart des packages utilisés.