Sommaire

Outils utilisés

Les manipulations seront effectuées via la librairie opencv de python.

On utilisera les imports suivants :

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt

A. Affichage de l’image / canaux RGB

La fonction cv2.imread permet d’importer une image dans une variable.

img = cv2.imread('exemple.jpg')
print(img)
plt.imshow(img)

(Crédits photo : https://github.com/DaluS)

Qu’affiche-t-on avec print(img) ? Qu’affiche-t-on avec plt.imshow(img) ? L’image s’affiche-t-elle correctement ?

Comment obtenir les informations de résolution / quantification de l’image ?

Les différents formats d’image sont-ils tous acceptés ?

Dans le cas d’une image couleur, celle-ci est généralement composées de trois images superposées : un canal rouge, vert, et bleu. (Remarque : on a depuis bien longtemps abandonné l’utilisation des images indexées, mais bon, ça a existé).

Afin de séparer (ou recomposer) les différents canaux d’une image, on va utiliser les fonctions suivantes :

C1, C2, C3 = cv2.split(img)
img_new = cv2.merge((C1, C2, C3))

Afficher chaque canal indépendemment. Donner l’ordre de codage des différents canaux (remarque : cet ordonnancement n’est pas toujours le même en fonction des librairies !)

Que se passe-t-il si on recomposer l’image “dans le mauvais sens” ? (i.e. inversion vert/bleu)

A1. Image en niveaux de gris (grayscale)

On peut également choisir d’afficher une image RGB en niveau de gris :

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Comment est calculé la valeur du pixel sur l’image en niveaux de gris ?

B. Manipulations basiques

On va s’intéresser à quelques opérations de base.

B1. Manipulations sur les valeurs de pixels

Comment inverser une image en niveaux de gris ?

Comment augmenter la luminosité d’une image en niveau de gris ?

Comment transférer votre image chez Amélie Poulain ?

B2. Manipulations sur les coordonnées des pixels

Comment créer une sous-image ? (cropping)

(On pourra également dessiner un rectangle sur l’image de base en utilisant la fonction cv.rectangle)

Comment effectuer une symétrie de l’image ? (symétrie axiale verticale, horizontale, ou symétrie centrale)

B3. Changement de taille de l’image

Pour une image donnée, changer la taille pour correspondre à un format donné.

Est-il possible d’augmenter le nombre de pixels d’une image ainsi? Cela permet-il d’augmenter la résolution d’une image ?