La bibliothèque openCV Python

bibliothèque d'images openCV Python

 

1. A propos de la bibliothèque openCV Python

OpenCV (Open Source Computer Vision) est une bibliothèque open-source très populaire en Python utilisée pour le traitement d'images, la vision par ordinateur et la reconnaissance de formes. Elle a été développée par Intel et est maintenant maintenue par la communauté open-source.
OpenCV fournit un large éventail de fonctionnalités et d'algorithmes pour travailler avec des images et des vidéos. Voici quelques-unes des principales caractéristiques d'OpenCV en Python :

  1. Chargement et affichage d'images et de vidéos : OpenCV permet de lire et de charger des images à partir de fichiers et d'afficher des images sur l'écran. Il prend également en charge le chargement et l'affichage de vidéos provenant de fichiers ou de flux en direct provenant de caméras.
  2. Manipulation d'images : OpenCV offre des fonctionnalités pour redimensionner, recadrer, faire pivoter et transformer des images. Vous pouvez également ajuster la luminosité, le contraste et la saturation des images. De plus, vous pouvez fusionner et séparer des canaux de couleur, ajuster les canaux de couleur individuellement, et effectuer des opérations arithmétiques sur les images.
  3. Traitement d'images : OpenCV propose une large gamme d'opérations de traitement d'images telles que le flou, la mise au point, la suppression du bruit, la binarisation, le seuillage, la détection de contours, le filtrage de couleur, la segmentation, etc. Vous pouvez appliquer ces opérations pour prétraiter les images avant de les utiliser dans des tâches plus avancées.
  4. Détection et suivi d'objets : OpenCV propose des algorithmes de détection d'objets et de suivi de mouvement. Vous pouvez détecter des visages, des yeux, des objets spécifiques, des lignes, des cercles et bien plus encore dans les images et les vidéos. Il fournit également des fonctionnalités pour suivre les objets en mouvement à partir de flux vidéo.
  5. Reconnaissance de formes : OpenCV permet d'effectuer la reconnaissance de formes et la correspondance de modèles. Vous pouvez rechercher des formes spécifiques dans des images et les faire correspondre avec précision à l'aide d'algorithmes tels que la correspondance de modèles basée sur les descripteurs ou la transformation de Hough.
  6. Vision stéréo : OpenCV offre des fonctionnalités pour la vision stéréo, qui permettent d'estimer la profondeur à partir de paires d'images stéréoscopiques. Vous pouvez effectuer la rectification des images, le calcul des disparités et la reconstruction 3D à partir de paires d'images stéréoscopiques.
  7. Traitement de flux vidéo en temps réel : OpenCV permet de traiter des flux vidéo en temps réel provenant de caméras ou de fichiers vidéo. Vous pouvez capturer des images à partir de caméras, appliquer des opérations en temps réel sur les images, effectuer des tâches de suivi d'objets ou de reconnaissance en continu, et afficher les résultats en temps réel.

Conclusion: OpenCV est une bibliothèque très puissante et largement utilisée dans le domaine du traitement d'images et de la vision par ordinateur. Elle est utilisée dans diverses applications, notamment la robotique, la réalité augmentée, la détection d'objets, la reconnaissance faciale, la surveillance vidéo, la navigation autonome, l'analyse médicale et bien d'autres domaines.
L'avantage d'OpenCV est sa grande portabilité: il est disponible sur plusieurs plateformes, y compris Windows, macOS, Linux, Android et iOS. De plus, OpenCV est écrit en C++ et dispose d'une interface Python qui le rend facile à utiliser et à intégrer dans des projets Python.
Dans ce cours, nous allons couvrir les principales fonctionnalités de la bibliothèque OpenCV et vous montrer comment les utiliser.

2. Installation & usage

Dans tout ce cours, nous allons sur un exemple d'image. Prenons à titre d'exemple l'image suivante au format .jpg:

traitement d'image avec la bibliothèque opencv python

Enregistrez la sous le nom de cheval.jpg dans votre dossier de travail.

Avant de commencer, assurez-vous d'avoir installé OpenCV en exécutant la commande suivante :

Une fois l'installation terminée, vous pouvez importer la bibliothèque dans votre script Python en utilisant l'instruction suivante :

Maintenant, nous pouvons commencer à explorer les fonctionnalités d'OpenCV.

3. Charger et afficher une image

Pour commencer, nous allons apprendre à charger et afficher une image à l'aide d'OpenCV. Voici un exemple de code :

afficher image avec opencv python



4. Redimensionner une image

Vous pouvez redimensionner une image en utilisant la fonction resize(). Voici un exemple :

redimmensionner une image avec openCV Python

5. Recadrer une image

Pour recadrer une image, utilisez l'opération de découpage des tableaux numpy. Voici un exemple :

recadrer une image avec openCV Python

6. Rotation d'une image

Pour faire pivoter une image, utilisez la fonction getRotationMatrix2D() suivie de warpAffine(). Voici un exemple :

rotation d'une image avec openCV python

7. Convertir le format d'une image

Pour convertir le format d'une image, utilisez la fonction cvtColor(). Voici un exemple :




8. Appliquer des filtres à une image

OpenCV offre une large gamme de filtres que vous pouvez appliquer à une image. Voici un exemple d'application d'un filtre de flou :

appliquer filtre gaussien à une image openCV python

9. Détection de contours

OpenCV propose des méthodes pour détecter les contours d'une image. Voici un exemple :

detection de contour d'une image avec openCV Python

Notez bien: que ce n'est qu'un aperçu des fonctionnalités de la bibliothèque, mais cela devrait vous donner une bonne base pour commencer à explorer davantage. OpenCV est une bibliothèque puissante et très utilisée dans le domaine du traitement d'images et de la vision par ordinateur, et elle offre de nombreuses autres fonctionnalités avancées que vous pouvez explorer par vous-même.

10. Manipulation des pixels d'une image

10.1 Lire les pixels d'une image

Pour lire les pixels d'une image en utilisant la bibliothèque OpenCV en Python, vous pouvez utiliser la fonction cv2.imread() pour charger l'image, puis accéder aux pixels en utilisant l'indexation des tableaux NumPy.

Voici un exemple pour lire les pixels d'une image :

10.2 Modifier les pixels d'une image

Pour modifier les pixels d'une image en utilisant la bibliothèque OpenCV en Python, vous pouvez charger l'image à l'aide de cv2.imread(), puis accéder et modifier les pixels en utilisant l'indexation des tableaux NumPy.

Voici un exemple de modification des pixels d'une image :

10.3 Convertir une image en niveau de gris avec la méthode de luminance

formule de luminance ( opencv utilise le codage BVR au lieu de RVB)
La formule de luminance est une formule couramment utilisée pour convertir une image couleur en niveaux de gris. Elle est basée sur la perception humaine des couleurs et attribue des poids différents aux canaux de couleur BVR (Bleu, Vert, Rouge) pour calculer une valeur de luminance.

Voici la formule de luminance :

  1. L : est la valeur de luminance,
  2. R : est la composante rouge,
  3. G : est la composante verte
  4. B : est la composante bleue d'un pixel.

Les coefficients de pondération (0.2989, 0.5870 et 0.1140) sont des valeurs standardisées qui approximent la sensibilité relative de l'œil humain aux différentes composantes BVR.

Exemple

niveau de gris opencv formule de luminance

10.4 Convertir une image en niveau de gris avec la méthode cv2.cvtColor()

Pour vous faciliter la tâche de conversion en niveau de gris, vous n'êtes pas obligé de passer par la méthode de luminance, opencv vous offre la méthode cv2.cvtColor() qui va jouer l'affaire

Exemple

convertir en niveau de gris opencv cvtColor

11. Liste des méthodes associées à la bibliothèque openCV

OpenCV offre une vaste gamme de méthodes et de fonctions pour le traitement d'images et la vision par ordinateur. Voici une liste des méthodes couramment utilisées dans OpenCV :

11.1 Lecture et écriture d'images et de vidéos

  1. cv2.imread() : charge une image à partir d'un fichier.
  2. cv2.imwrite() : enregistre une image dans un fichier.
  3. cv2.VideoCapture() : ouvre un flux vidéo à partir d'un fichier ou d'une caméra.
  4. cv2.VideoWriter() : crée un objet pour enregistrer une vidéo dans un fichier.

11.2 Manipulation d'images

  1. cv2.resize() : redimensionne une image.
  2. cv2.cvtColor() : convertit l'espace colorimétrique d'une image.
  3. cv2.flip() : retourne une image horizontalement ou verticalement.
  4. cv2.merge() et cv2.split() : fusionne et sépare les canaux de couleur d'une image.
  5. cv2.add() et cv2.subtract() : effectue des opérations arithmétiques sur les images.

11.3 Opérations de traitement d'images

  1. cv2.blur() et cv2.GaussianBlur() : applique un flou à une image.
  2. cv2.threshold() : effectue un seuillage pour binariser une image.
  3. cv2.Canny() : détecte les contours dans une image.
  4. cv2.dilate() et cv2.erode() : effectue des opérations de dilatation et d'érosion sur une image.
  5. cv2.warpAffine() et cv2.warpPerspective() : effectue des transformations géométriques sur une image.

11.4 Détection d'objets et de visages

  1. cv2.CascadeClassifier() : crée un classificateur en cascade pour la détection d'objets (comme les visages).
  2. cv2.detectMultiScale() : détecte les objets dans une image en utilisant un classificateur en cascade.
  3. cv2.rectangle() : dessine des rectangles autour des objets détectés.

11.5 Transformation d'images

  1. cv2.getAffineTransform() et cv2.getRotationMatrix2D() : calculent des matrices de transformation pour la rotation, la translation et l'échelle.
  2. cv2.warpAffine() et cv2.warpPerspective() : appliquent des transformations géométriques à une image.

11.6 Correspondance de formes et reconnaissance d'objets

  1. cv2.matchTemplate() : recherche une forme spécifique dans une image en utilisant une correspondance de modèle.
  2. cv2.findContours() : trouve les contours dans une image.
  3. cv2.drawContours() : dessine les contours sur une image.

11.7 Vision stéréo

  1. cv2.stereoRectify() : rectifie les images stéréoscopiques.
  2. cv2.stereoSGBM() et cv2.stereoBM() : calculent la disparité entre les images stéréoscopiques.
  3. cv2.reprojectImageTo3D() : convertit la carte de disparité en une carte de profondeur 3D.

Notez bien: que ceci n'est qu'une liste partielle des méthodes disponibles dans OpenCV. La bibliothèque offre de nombreuses autres fonctionnalités et méthodes pour diverses tâches telles que la transformation de Hough, le suivi d'objets, l'estimation de mouvement, la détection de contours avancée, la segmentation d'image, la calibration de caméra, la réalité augmentée, etc. Il est recommandé de consulter la documentation officielle d'OpenCV pour une référence complète des méthodes disponibles et pour en apprendre davantage sur chaque fonctionnalité.
La documentation officielle d'OpenCV est disponible sur le site web officiel d'OpenCV : https://docs.opencv.org/
De plus, la bibliothèque OpenCV pour Python offre une interface complète vers les fonctionnalités de la bibliothèque C++, vous permettant ainsi d'explorer et d'utiliser les fonctionnalités avancées d'OpenCV directement dans votre code Python.

Remaque

En explorant et en expérimentant avec les différentes méthodes et fonctionnalités d'OpenCV, vous serez en mesure de réaliser une grande variété de tâches de traitement d'images et de vision par ordinateur pour répondre à vos besoins spécifiques.

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply