Ce document permet d’apprendre les manipulations de base d’image avec OpenCV, savoir réduire la taille d’une image, en extraire une zone ou encore la convertir en niveau de gris, …

Cette introduction va se servir des lignes du code que nous avons apprises dans l’article pour apprendre à lire des images. Si vous n’êtes pas à l’aise avec ces lignes, je vous invite à consulter cet article .

Commençons donc par charger notre image.

import cv2

image=cv2.imread('Lena.png')
cv2.imshow("original",image)
cv2.waitKey(0)

Cette partie était plutôt simple, nous l’avons déjà vue . Pour les deux prochaines étapes, nous allons avoir besoin de connaître une information importante sur l’image d’origine, à savoir sa taille. Pour ce faire, nous allons consulter l’attribut shape de notre image.

print(image.shape)

Lorsque nous exécutons cette ligne, nous obtenons la taille de l’image en sortie dans le terminal: (168,300,3). Le premier nombre correspond au nombre de ligne de notre image, le second donne le nombre de colonnes et enfin le troisième correspond au nombre de composantes (R, G et B). Lorsque l’on travaille avec les images, l’habitude est d’exprimer ces valeurs en hauteur (height) et en largeur (width). La première valeur correspond donc à la hauteur, la seconde à la largeur.

Réduction de la taille de l’image

Passons à la réduction de la taille de notre image, nous souhaitons par exemple avoir une taille en hauteur de 100 pixels:

r=100/image.shape[0]
dim=(int(image.shape[1]*r),100)
reduite=cv2.resize(image, dim, interpolation =cv2.INTER_AREA)

cv2.imshow('reduite',reduite)
cv2.waitKey(0)
print(reduite.shape).shape)

Nous souhaitons conserver l’aspect de l’image. Nous calculons donc le ratio entre notre taille en hauteur et notre nouvelle taille à la ligne afin de pouvoir l’appliquer à la largeur de l’image. Nous définissons la dimension de notre nouvelle image à la ligne 9. La dimension utilisé lors de l’application de la fonction cv2.resize est de la forme (largeur, hauteur). Notre nouvelle largeur est donc notre ancienne largeur multipliée par le ratio que nous avons calculé.

La réduction de l’image intervient à la ligne 10. Le premier paramètre correspond à notre image d’origine, le second correspond aux dimensions que nous avons calculées précédemment. enfin le troisième paramètre correspond à la manière utilisée pour la réduction.

Notre nouvelle image est de taille (100,178,3), ce que nous voulions.

 

Extraction d’une partie de l’image

Passons maintenant à l’extraction de zone dans notre image. nous souhaitons extraire la tête de Lena:

crop=image[30:130,100:200]
cv2.imshow('extrait',crop)
cv2.waitKey(1000)

Pour ce faire, rien de plus simple, nous indiquons uniquement les bornes de début et de fin de la zone à extraire. Nous commençons par les coordonnées en hauteur, puis en largeur.

Changement de repère colorimétrique

Nous en sommes las de la couleur et nous voulons passer en niveau de gris, pas de souci !

gray=cv2.cvtColor(crop, cv2.COLOR_RGB2GRAY)
cv2.imshow('extrait',gray)
cv2.waitKey(1000)

La fonction cv2.cvtColor permet de convertir une image dans un domaine de couleur à un autre. Le premier argument est, comme vous l’avez remarqué notre image d’origine. Le second argument correspond au code de conversion. Dans notre cas de RGB vers le niveau de gris.

Si vous voulez connaître les différents types de conversion, je vous invite à consulter cette page.

Vous connaissez maintenant quelques éléments de manipulations d’image.


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.