Data Visualization

Superposer des rectangles sur des images avec Matplotlib

Spread the love

Matplotlib est une bibliothèque Python polyvalente reconnue pour ses capacités de visualisation de données. Au-delà de la représentation graphique des données, elle excelle dans la manipulation d’images, vous permettant de superposer des formes directement sur les images. Ce tutoriel montre comment ajouter efficacement des rectangles aux images à l’aide de Matplotlib.

Table des matières

Dessiner des rectangles dans Matplotlib

Avant de travailler avec des images, maîtrisons le dessin de rectangles sur des figures Matplotlib standard. Cette étape fondamentale est cruciale pour comprendre le processus de superposition d’images.

import matplotlib.pyplot as plt
import matplotlib.patches as patches

# Créer une figure et des axes
fig, ax = plt.subplots()

# Définir le rectangle
rect = patches.Rectangle((0.1, 0.1), 0.5, 0.5, linewidth=1, edgecolor='r', facecolor='none')

# Ajouter le rectangle aux axes
ax.add_patch(rect)

# Définir les limites des axes (facultatif)
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])

# Afficher le graphique
plt.show()

Ce code génère un rectangle simple. Décomposons-le :

  • matplotlib.pyplot as plt : Importe la bibliothèque de tracé Matplotlib.
  • matplotlib.patches as patches : Importe le module patches, contenant des objets de forme comme les rectangles.
  • patches.Rectangle((x, y), width, height) : Crée un rectangle. (x, y) spécifie le coin inférieur gauche ; width et height définissent ses dimensions. Les coordonnées sont normalisées (0 à 1).
  • linewidth, edgecolor, facecolor : Contrôlent l’apparence du rectangle. facecolor='none' crée uniquement un contour.
  • ax.add_patch(rect) : Ajoute le rectangle aux axes.
  • ax.set_xlim() et ax.set_ylim() : Définissent les limites des axes x et y (facultatif, pour une meilleure visualisation).

Superposer des rectangles sur des images

Maintenant, étendons cela pour superposer des rectangles sur des images. Nous utiliserons imread de Matplotlib pour charger l’image.

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.image as mpimg

# Charger l'image
img = mpimg.imread('your_image.jpg')  # Remplacer par le chemin de votre image

# Créer une figure et des axes
fig, ax = plt.subplots()

# Afficher l'image
ax.imshow(img)

# Créer un rectangle (coordonnées en pixels)
rect = patches.Rectangle((100, 100), 150, 100, linewidth=2, edgecolor='b', facecolor='none')

# Ajouter le rectangle aux axes
ax.add_patch(rect)

# Afficher le graphique
plt.show()

Ceci est similaire à l’exemple précédent, mais :

  • mpimg.imread('your_image.jpg') : Charge l’image. N’oubliez pas de remplacer 'your_image.jpg' par le chemin de votre image.
  • ax.imshow(img) : Affiche l’image sur les axes.
  • Les coordonnées du rectangle (100, 100) sont maintenant en coordonnées de pixels. Ajustez ces valeurs pour positionner le rectangle.

Cette méthode vous permet d’annoter efficacement les images. Expérimentez avec les coordonnées, les tailles, les couleurs et les largeurs de ligne pour personnaliser l’apparence et le placement du rectangle. N’oubliez pas que les coordonnées sont relatives aux dimensions en pixels de l’image.

Laisser un commentaire

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