J'ai ainsi créé un tableau:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Ce que je veux faire, c'est afficher un seul point rouge au centre d'une image 512x512. (Au moins pour commencer ... je pense que je peux comprendre le reste à partir de là)
Réponses:
Vous pouvez utiliser PIL pour créer (et afficher) une image:
la source
(w,h,3)
, mais cela devrait l'être(h,w,3)
, car l'indexation dans PIL diffère de l'indexation dans numpy. Il y a une question connexe: stackoverflow.com/questions/33725237/…(h,w,3)
. (Il est maintenant fixe, ci-dessus.) La longueur du premier axe peut être considérée comme le nombre de lignes dans le tableau, et la longueur du deuxième axe, le nombre de colonnes.(h, w)
Correspond donc à un tableau de "hauteur"h
et "largeur"w
.Image.fromarray
convertit ce tableau en une image de hauteurh
et de largeurw
.img.show()
ne fonctionne pas dans le cahier ipython.img_pil = Image.fromarray(img, 'RGB') display(img_pil.resize((256,256), PIL.Image.LANCZOS))
Les éléments suivants devraient fonctionner:
Si vous utilisez le cahier / laboratoire Jupyter, utilisez cette commande en ligne avant d'importer matplotlib:
la source
plt.gray()
une fois dans votre code pour basculer tous les graphiques suivants en niveaux de gris. Pas ce que l'OP veut mais bon à savoir quand même.squeeze()
pour éliminer la troisième dimension:plt.imshow(data.squeeze())
Le chemin le plus court est d'utiliser
scipy
, comme ceci:Cela nécessite également l'installation de PIL ou d'oreiller.
Une approche similaire nécessitant également PIL ou Pillow mais qui peut invoquer une visionneuse différente est:
la source
scipy.misc.imshow(data)
.toimage
a été déconseillé dans scipy-1.0.0 et supprimé dans 1.2.0, en faveur de Pillow'sImage.fromarray
.En utilisant pygame , vous pouvez ouvrir une fenêtre, obtenir la surface sous forme de tableau de pixels et manipuler comme vous le souhaitez à partir de là. Vous devrez cependant copier votre tableau numpy dans le tableau de surface, ce qui sera beaucoup plus lent que d'effectuer des opérations graphiques réelles sur les surfaces de pygame elles-mêmes.
la source
Comment afficher des images stockées dans un tableau numpy avec un exemple (fonctionne dans le cahier Jupyter)
Je sais qu'il existe des réponses plus simples, mais celle-ci vous permettra de comprendre comment les images sont réellement noyées à partir d'un tableau numpy.
Exemple de chargement
Afficher le tableau d'une image
Créez des sous-tracés vides de 10 x 10 pour visualiser 100 images
Tracer 100 images
Résultat:
Que fait
axes.flat
-il? Il crée un énumérateur numpy afin que vous puissiez itérer sur l'axe afin de dessiner des objets dessus. Exemple:la source
Utilisation de fromarray d'oreiller, par exemple:
la source
La bibliothèque d'imagerie Python peut afficher des images à l'aide de tableaux Numpy. Jetez un œil à cette page pour un exemple de code:
EDIT: Comme le dit la note au bas de cette page, vous devriez vérifier les dernières notes de version qui rendent cela beaucoup plus simple:
http://effbot.org/zone/pil-changes-116.htm
la source
Supplément pour le faire avec matplotlib. Je l'ai trouvé pratique pour effectuer des tâches de vision par ordinateur. Disons que vous avez des données avec dtype = int32
la source