Sauvegarder les données d'une image dans un fichier texte avec python, numpy et PIL

Published: 20 août 2014

DMCA.com Protection Status

Dans cet article on va voir comment transformer une image en fichier texte avec python. L'objectif ici étant, tout d'abord, d'obtenir une matrice de données à partir d'une image et de sauvegarder cette matrice dans un simple fichier texte (fichier qui pourra servir ultérieurement par un programme en fortran ou en C pour travailler directement sur les données brutes de l'image). Considérons un exemple simple: une image en niveau de gris (lena_grayscale.png); pour obtenir une matrice de données à partir de l'image il faut passer par "imread"; cette fonction retourne ici une matrice de dimension (512, 512, 4) avec 512*512 nombres de pixels dans l'image et 4: (3 pour le code RGB + 1 pour le canal alpha qui règle la transparence de cette dernière); l'image étant en niveau de gris le code RGB est donc le même pour les 3 couleurs (R=G=B); si de plus on ne prend pas en compte le canal alpha on peut résumer l'image à une matrice de dimension (512,512) et sauvegarder avec numpy (voir numpy.savetxt) les données dans un fichier intitulé ici [attachment:465]:

Transformer une image en fichier texte avec python.
Transformer une image en fichier texte avec python.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread('lena_grayscale.png')

print type(img)
print img.shape, img.dtype
print img.max(),img.min()

M = np.zeros((img.shape[0],img.shape[1]))   
M[:,:] = img[:,:,0]

np.savetxt('data.txt',M)

plt.imshow(M, cmap = plt.get_cmap('gray')) # Check if Data are ok !
plt.show()

Note: pour vérifier que la matrice M de dimension (512,512) est suffisante pour obtenir l'image de départ vous pouvez utiliser la fonction imshow de matplotlib pour tracer celle-ci.

Recherches associées

Image

of