Lorsqu’on travail sur des images, il est souvent utile de pouvoir accéder aux données de chaque pixel par l’intermédiaire d’un système matriciel. Pour cela, il existe plusieurs méthodes d’ouverture d’une image et de conversion des données dans un format compatible par la suite avec une utilisation sous Numpy.

Bibliothèque PIL

Une première solution est d’ouvrir l’image à l’aide de la bibliothèque PIL (ou pillow de son nom complet).

L’exemple suivant permet d’ouvrir une image – fonction open de la bibliothèque Pillow – puis de la transformer en matrice – fonction asarray de Numpy :

from PIL import Image
import numpy as np

imageRGB = Image.open("mon_fichier.png") # ou jpg
imageGrey = imageRGB.convert("L")
imageData = np.asarray( imageGrey )

La ligne intermédiaire utilisant la fonction convert de Pillow permet de passer une image en couleur vers une image en nuances de gris. Il aurait été possible également de travailler sur un seul des calques de l’image initiale – voir tutoriel sur Pillow.

On peut afficher directement l’image à partir de la bibliothèque Pillow avec la fonction show :

imageRGB.show()
imageGrey.show()

Il est également possible de récupérer la hauteur et la largeur de l’image par l’intermédiaire de la fonction shape (propre à Numpy) :

hauteur = imageData.shape[0]
longueur = imageData.shape[1]

Bibliothèque OpenCV

OpenCV est conçu pour le traitement avancé des images. Il se base essentiellement sur la bibliothèque Numpy pour les calculs associés aux images. La fonction d’ouverture d’un fichier image fournit donc naturellement une matrice en sortie.

import cv2
img = cv2.imread("mon_fichier.png", 0)
Python / Convertir une image en matrice