Niveaux de gris de l'image d'un tableau NumPy pour la transformée de Fourier
Actuellement, je suis à l'aide de PIL et NumPy. J'ai une couleur png
image et que je veux:
- Lire en niveaux de gris
- Convertir un tableau NumPy
- Effectuer une FFT sur le tableau
- Afficher l'image
C'est ce que j'essaie (dans IPython w/--pylab
drapeau):
In [1]: import Image
In [2]: img = Image.open('ping.png').convert('LA')
In [3]: img_as_np = np.asarray(img)
In [4]: img_as_np
Out[4]: array(<Image.Image image mode=LA size=1000x1000 at 0x105802950>, dtype=object)
In [5]: img_fft = fft.fft2(img_as_np) // IndexError: index out of range for array
Une raison pour l'utilisation de la
Après vous revoir, la réponse est stackoverflow.com/a/14472089/1832154 montre comment afficher correctement le résultat d'une transformée de Fourier.
J'ai lu quelque part que
LA
mode (niveaux de gris avec alpha) ?Après vous revoir, la réponse est stackoverflow.com/a/14472089/1832154 montre comment afficher correctement le résultat d'une transformée de Fourier.
J'ai lu quelque part que
LA
mode permettez-moi d'utiliser imshow()
en niveaux de gris, je me rends compte maintenant L
met en niveaux de gris, mais j'ai juste besoin d'ajouter un argument à imshow()
pour s'assurer qu'il montre bien que les niveaux de gris. J'ai appris (à partir de réponses ci-dessous) A
est d'empêcher la conversion se passe bien.. mon erreur 🙂 Merci!OriginalL'auteur adelbertc | 2013-01-29
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser le mode " L "au lieu de" LA " en tant que paramètre à la fonction convert() méthode. "LA" les feuilles d'un canal alpha, puis le numpy.asarray ne fonctionne pas comme prévu. Si vous avez besoin d'un canal alpha, alors vous aurez besoin d'une autre méthode pour convertir un tableau numpy. Sinon, utilisez le mode "L".
OriginalL'auteur Justin Peel
Il semblerait que vous utilisez une version de la LIP avant 1.1.6, où ils ont introduit les méthodes de sorte que numpy serait de savoir quoi faire avec un
Image
. Si vous êtes juste en train deimg_as_np
comme un élément de tableau contenant uneImage
objet (qui est ce queOut[4]
est de vous montrer).Au contraire, vous devez faire quelque chose comme
np.asarray(img.getdata())
, qui vous donnera unnum_pixels x num_channels
tableau d'entiers entre 0 et 255 (au moins pour le png, j'ai essayé). Vous voudrez peut-être fairele poser comme l'image (transposée). Vous pouvez également diviser par 255 flottant pour des valeurs entre 0 et 1, si c'est le format que vous êtes enceinte (comme le fait par exemple matplotlib est
imshow
).OriginalL'auteur Dougal
À l'aide de cette pour une image:
OriginalL'auteur Jaime