Comment recadrer une image en utilisant OpenCV en Python

Manav Narula 25 février 2025 Python Python OpenCV
  1. Méthode 1 : Recadrage à l’aide du découpage de tableau NumPy
  2. Méthode 2 : Recadrage à l’aide de la ROI (Région d’intérêt) d’OpenCV
  3. Méthode 3 : Recadrage avec les événements de souris
  4. Conclusion
  5. Section FAQ
Comment recadrer une image en utilisant OpenCV en Python

Le traitement d’image est une compétence cruciale pour les développeurs, en particulier dans des domaines comme la vision par ordinateur, l’apprentissage automatique et les médias numériques. L’une des tâches les plus courantes dans le traitement d’image est le recadrage des images. Le recadrage aide à se concentrer sur une zone spécifique d’une image, en éliminant les parties inutiles et en améliorant la qualité visuelle globale. Dans cet article, nous allons explorer comment recadrer des images en utilisant OpenCV en Python. Nous aborderons diverses méthodes, fournirons des exemples de code clairs et bien commentés, et offrirons des explications détaillées pour vous aider à comprendre chaque approche. Que vous soyez débutant ou programmeur expérimenté, ce guide vous équipera des compétences nécessaires pour manipuler les images efficacement.

Méthode 1 : Recadrage à l’aide du découpage de tableau NumPy

L’une des façons les plus simples de recadrer une image dans OpenCV est d’utiliser le découpage de tableau NumPy. OpenCV lit les images sous forme de tableaux NumPy, ce qui vous permet de manipuler directement les valeurs des pixels. Cette méthode est simple et efficace pour recadrer des zones rectangulaires d’une image.

Processus étape par étape

  1. Importer les bibliothèques : Commencez par importer les bibliothèques nécessaires, y compris OpenCV et NumPy.
  2. Charger l’image : Utilisez cv2.imread() pour charger l’image que vous souhaitez recadrer.
  3. Définir les coordonnées de recadrage : Spécifiez les coordonnées pour les coins supérieur gauche et inférieur droit de la zone de recadrage.
  4. Recadrer l’image : Utilisez le découpage de tableau pour extraire la région souhaitée.
  5. Afficher l’image recadrée : Utilisez cv2.imshow() pour visualiser le résultat recadré.

Exemple de code

import cv2
import numpy as np

# Load the image
image = cv2.imread('path/to/your/image.jpg')

# Define the coordinates for cropping (y_start:y_end, x_start:x_end)
cropped_image = image[50:200, 100:300]

# Display the cropped image
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dans cette méthode, nous chargeons l’image en utilisant la fonction imread() d’OpenCV. L’image est représentée sous forme de tableau NumPy, où chaque pixel peut être accessible à l’aide de ses coordonnées. En spécifiant la plage de lignes et de colonnes, nous pouvons découper le tableau pour obtenir l’image recadrée. La fonction imshow() affiche l’image recadrée dans une fenêtre, vous permettant de visualiser immédiatement le résultat. Cette méthode est efficace et offre un contrôle précis sur le processus de recadrage.

Méthode 2 : Recadrage à l’aide de la ROI (Région d’intérêt) d’OpenCV

Une autre méthode efficace pour recadrer des images dans OpenCV est d’utiliser la technique de la Région d’Intérêt (ROI). Cette méthode est particulièrement utile lorsque vous souhaitez recadrer une zone spécifique en fonction d’entrées ou de conditions dynamiques.

Processus étape par étape

  1. Importer les bibliothèques : Commencez par importer OpenCV.
  2. Charger l’image : Utilisez cv2.imread() pour charger votre image.
  3. Définir la ROI : Spécifiez les coordonnées pour la région que vous souhaitez recadrer.
  4. Recadrer l’image : Utilisez la ROI pour extraire la zone désirée.
  5. Afficher l’image recadrée : Utilisez cv2.imshow() pour voir le résultat.

Exemple de code

import cv2

# Load the image
image = cv2.imread('path/to/your/image.jpg')

# Define the Region of Interest (ROI)
x, y, w, h = 100, 50, 200, 150  # x, y, width, height
roi = image[y:y+h, x:x+w]

# Display the cropped image
cv2.imshow('Cropped ROI', roi)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dans cette méthode, nous définissons une Région d’Intérêt (ROI) en spécifiant les coordonnées du coin supérieur gauche (x, y) ainsi que la largeur (w) et la hauteur (h) de la zone désirée. La syntaxe image[y:y+h, x:x+w] nous permet de découper le tableau d’image en conséquence. Cette méthode est particulièrement utile pour les applications où la zone de recadrage peut changer en fonction de l’entrée de l’utilisateur ou de la logique du programme. En utilisant des ROI, vous pouvez ajuster dynamiquement la partie de l’image sur laquelle vous souhaitez vous concentrer.

Méthode 3 : Recadrage avec les événements de souris

Pour une approche plus interactive, vous pouvez recadrer des images en utilisant des événements de souris dans OpenCV. Cette méthode permet aux utilisateurs de sélectionner visuellement la zone de recadrage, ce qui la rend idéale pour les applications où la précision est essentielle.

Processus étape par étape

  1. Importer les bibliothèques : Importer OpenCV et NumPy.
  2. Charger l’image : Utilisez cv2.imread() pour charger l’image.
  3. Définir le rappel de souris : Créez une fonction pour gérer les événements de souris et sélectionner la zone de recadrage.
  4. Afficher l’image : Utilisez cv2.imshow() pour montrer l’image.
  5. Recadrer la zone sélectionnée : Extraire la zone en fonction de la sélection de l’utilisateur.

Exemple de code

import cv2

# Global variables to store the cropping coordinates
start_point = None
end_point = None

# Mouse callback function to capture the cropping area
def select_area(event, x, y, flags, param):
    global start_point, end_point
    if event == cv2.EVENT_LBUTTONDOWN:
        start_point = (x, y)
    elif event == cv2.EVENT_LBUTTONUP:
        end_point = (x, y)
        cv2.rectangle(image, start_point, end_point, (0, 255, 0), 2)
        cv2.imshow('Image', image)

# Load the image
image = cv2.imread('path/to/your/image.jpg')
cv2.namedWindow('Image')
cv2.setMouseCallback('Image', select_area)

# Display the image
cv2.imshow('Image', image)
cv2.waitKey(0)

# Crop the image based on selected points
if start_point and end_point:
    cropped_image = image[start_point[1]:end_point[1], start_point[0]:end_point[0]]
    cv2.imshow('Cropped Image', cropped_image)
    cv2.waitKey(0)

cv2.destroyAllWindows()

Dans cette méthode interactive, nous définissons une fonction de rappel de souris qui capture les points de départ et d’arrivée du rectangle de recadrage. L’utilisateur peut cliquer et faire glisser pour sélectionner visuellement la zone. Lorsque le bouton de la souris est relâché, la zone sélectionnée est mise en surbrillance avec un rectangle, et l’opération de recadrage est effectuée en fonction des coordonnées définies. Cette méthode améliore l’expérience utilisateur et fournit un moyen pratique de recadrer des images avec précision.

Conclusion

Le recadrage d’images est une tâche fondamentale dans le traitement d’image, et OpenCV en Python offre diverses méthodes pour y parvenir. Du simple découpage NumPy aux événements de souris interactifs, chaque méthode a ses avantages et ses cas d’utilisation. Comprendre ces techniques vous donnera le pouvoir de manipuler les images efficacement, que ce soit pour des projets personnels ou des applications professionnelles. Avec les connaissances acquises grâce à ce guide, vous pouvez recadrer des images en toute confiance et explorer d’autres fonctionnalités dans OpenCV.

Section FAQ

  1. Qu’est-ce qu’OpenCV ?
    OpenCV (Open Source Computer Vision Library) est une bibliothèque puissante utilisée pour des tâches de vision par ordinateur et de traitement d’image. Elle fournit diverses fonctionnalités pour la manipulation d’images, l’analyse et l’apprentissage automatique.
  2. Comment installer OpenCV en Python ?
    Vous pouvez installer OpenCV en utilisant pip en exécutant la commande :
    pip install opencv-python
    
  3. Puis-je recadrer des images dans des formats autres que JPEG ?
    Oui, OpenCV prend en charge divers formats d’image, y compris PNG, BMP et TIFF. Vous pouvez utiliser les mêmes méthodes pour recadrer des images, quel que soit leur format.
  4. Comment puis-je enregistrer l’image recadrée ?
    Vous pouvez enregistrer l’image recadrée en utilisant la fonction cv2.imwrite(). Par exemple :
    cv2.imwrite('path/to/save/cropped_image.jpg', cropped_image)
    
  5. Existe-t-il un moyen de redimensionner l’image recadrée ?
    Oui, vous pouvez redimensionner l’image recadrée en utilisant la fonction cv2.resize(). Par exemple :
    resized_image = cv2.resize(cropped_image, (width, height))
    
Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Article connexe - Python OpenCV