J'ai une image RVB que je veux convertir en image en niveaux de gris, de sorte que je puisse avoir un nombre (peut-être entre 0 et 1) pour chaque pixel. Cela me donne une matrice qui a des dimensions égales à celles des pixels de l'image. Ensuite, je veux faire quelques manipulations sur cette matrice et générer une nouvelle image en niveaux de gris à partir de cette matrice manipulée. Comment puis-je faire ceci?
Je travaille fréquemment avec des images en tant que tableaux NumPy - je le fais comme ceci:
import numpy as np
from PIL import Image
x=Image.open('im1.jpg','r')
x=x.convert('L') #makes it greyscale
y=np.asarray(x.getdata(),dtype=np.float64).reshape((x.size[1],x.size[0]))
<manipulate matrix y...>
y=np.asarray(y,dtype=np.uint8) #if values still in range 0-255!
w=Image.fromarray(y,mode='L')
w.save('out.jpg')
Si les valeurs de votre tableau y ne sont plus dans la plage 0-255 après les manipulations, vous pouvez passer à des TIFF 16 bits ou simplement redimensionner.
-Aldo