Opérations de base sur les images

OpenCVBeginner
Pratiquer maintenant

Introduction

Bienvenue dans ce tutoriel sur OpenCV-Python! Ce tutoriel couvrira certaines opérations de base sur les images en utilisant la bibliothèque OpenCV en Python.

Accès et modification des valeurs de pixels

Avant de commencer ce laboratoire, les participants doivent ouvrir le Shell Python dans le terminal dans /home/labex/project

cd /home/labex/project

python3

Tout d'abord, commençons par charger une image et la visualiser à l'aide d'OpenCV :

import cv2

## Charge une image
image = cv2.imread('image.jpg')

## Affiche l'image
cv2.imwrite('Original Image.jpg', image)

Pour accéder à la valeur d'un pixel, il suffit de fournir ses coordonnées (x, y) comme suit :

pixel_value = image[y, x]

La valeur du pixel est un tableau contenant les canaux de couleur (B, G, R). Pour modifier la valeur d'un pixel, il suffit d'affecter une nouvelle valeur aux coordonnées correspondantes.

Voici un exemple pour définir le pixel [0:9, 0:9] en rouge :

for x in range(10):
    for y in range(10):
        image[x, y] = [0, 0, 255]  ## Définit le pixel en rouge


cv2.imwrite('Modified Image.jpg', image)

L'image d'origine ressemble à :

Image d'origine avant modification

Image après modification des valeurs de pixels dans la plage [0:9,0:9] :

Image avec valeurs de pixels modifiées

Les utilisateurs peuvent vérifier la correction du résultat en exécutant le code ci-dessous.

Accès aux propriétés d'image

Les propriétés d'une image incluent le nombre de lignes, de colonnes et de canaux, ainsi que le type de données de l'image et le nombre total de pixels.

Pour accéder à la forme de l'image (lignes, colonnes et canaux), utilisez l'attribut shape :

height, width, channels = image.shape
print(height, width, channels)

## sortie
## 360 640 3

Pour accéder au nombre total de pixels, utilisez l'attribut size :

total_pixels = image.size
print(total_pixels)

## sortie
## 691200

Pour accéder au type de données de l'image, utilisez l'attribut dtype :

image_dtype = image.dtype
print(image_dtype)

## sortie
## uint8

Définition d'une région d'intérêt (ROI)

Une région d'intérêt (ROI) est une sous-image que l'on peut extraire de l'image d'origine. Pour définir une ROI, il suffit de fournir les coordonnées de départ et de fin.

roi = image[start_y:end_y, start_x:end_x]

Par exemple, pour extraire une ROI de 100x100 pixels dans le coin supérieur gauche, on peut faire ce qui suit :

roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)

L'image générée ROI.jpg ressemble à :

Image d'exemple de ROI

Découpage et fusion d'images

Pour découper une image en ses canaux de couleur (B, G, R), utilisez la fonction cv2.split() :

b, g, r = cv2.split(image)

Nous pouvons désormais afficher les canaux individuels à l'aide de cv2.imwrite().
Pour fusionner les canaux en une seule image, utilisez la fonction cv2.merge() :

merged_image = cv2.merge((b, g, r))

Par exemple, pour échanger les canaux rouge et bleu, on peut faire ce qui suit :

swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)

L'image générée Swapped Channels Image.jpg ressemble à :

Canaux rouge et bleu échangés

Résumé

Et voilà! Vous avez appris certaines opérations de base sur les images à l'aide d'OpenCV-Python. Ces sont des concepts importants à comprendre lorsqu'on travaille avec des images dans les applications de vision par ordinateur et de traitement d'images. En maîtrisant ces opérations de base, vous serez bien parti pour développer des algorithmes de traitement d'images plus avancés.