web-dev-qa-db-fra.com

Comment puis-je afficher une image d'un fichier dans Jupyter Notebook?

Je voudrais utiliser un carnet IPython comme moyen d’analyser de manière interactive certaines cartes du génome que je suis en train de créer avec le module GenomeDiagram de Biopython. Bien qu'il existe une documentation exhaustive sur la manière d'utiliser matplotlib pour obtenir des graphiques en ligne dans IPython Notebook, GenomeDiagram utilise la boîte à outils ReportLab qui, à mon avis, n'est pas prise en charge pour les graphiques en ligne dans IPython. 

Cependant, je pensais qu’une solution à ce problème consisterait à écrire le diagramme parcelle/génome dans un fichier, puis à ouvrir l’image en ligne, ce qui donnerait le même résultat avec quelque chose comme ceci:

Gd_diagram.write("test.png", "PNG")
display(file="test.png")

Cependant, je ne peux pas comprendre comment faire cela - ou savoir si c'est possible. Alors, est-ce que quelqu'un sait si les images peuvent être ouvertes/affichées dans IPython?

128
zach

Avec la permission de ce post , vous pouvez effectuer les opérations suivantes:

from IPython.display import Image
Image(filename='test.png') 

( documents officiels )

231
zach

Si vous essayez d'afficher une image de cette manière dans une boucle, vous devez envelopper le constructeur Image dans une méthode d'affichage.

from IPython.display import Image, display

listOfImageNames = ['/path/to/images/1.png',
                    '/path/to/images/2.png']

for imageName in listOfImageNames:
    display(Image(filename=imageName))
154
DrMcCleod

Remarque, les solutions affichées jusqu'à présent ne fonctionnent que pour les fichiers png et jpg!

Si vous le souhaitez encore plus facilement sans importer d'autres bibliothèques ou si vous souhaitez afficher un fichier GIF animé ou non animé dans votre Notebook Ipython. Transformez la ligne où vous voulez l’afficher en balisage et utilisez ce joli hack court!

![alt text](test.gif "Title")
26
Philipp Schwarz

Cela importera et affichera une image .jpg dans Jupyter (testée avec Python 2.7 en environnement Anaconda)

from IPython.display import display
from PIL import Image


path="/path/to/image.jpg"
display(Image.open(path))

Vous devrez peut-être installer PIL

dans Anaconda cela se fait en tapant

conda install pillow
5
Conor Cosnett

Avec l'aimable autorisation de this page, j'ai trouvé que cela fonctionnait alors que les suggestions ci-dessus ne fonctionnaient pas:

import PIL.Image
from cStringIO import StringIO
import IPython.display
import numpy as np
def showarray(a, fmt='png'):
    a = np.uint8(a)
    f = StringIO()
    PIL.Image.fromarray(a).save(f, fmt)
    IPython.display.display(IPython.display.Image(data=f.getvalue()))
5
Afflatus

Vous pouvez également utiliser PIL pour afficher des fichiers image dans Jupyter Notebook: 

from PIL import Image
path = "cats/cat0.jpg"
display(Image.open(path))

Cela fonctionne également dans une boucle.

3
ezchx

Lorsque vous utilisez GenomeDiagram avec Jupyter (iPython), le moyen le plus simple d’afficher des images consiste à convertir GenomeDiagram en image PNG. Cela peut être encapsulé à l'aide d'un objet IPython.display.Image pour l'afficher dans le bloc-notes.

from Bio.Graphics import GenomeDiagram
from Bio.SeqFeature import SeqFeature, FeatureLocation
from IPython.display import display, Image
Gd_diagram = GenomeDiagram.Diagram("Test diagram")
Gd_track_for_features = Gd_diagram.new_track(1, name="Annotated Features")
Gd_feature_set = Gd_track_for_features.new_set()
Gd_feature_set.add_feature(SeqFeature(FeatureLocation(25, 75), strand=+1))
Gd_diagram.draw(format="linear", orientation="landscape", pagesize='A4',
                fragments=1, start=0, end=100)
Image(Gd_diagram.write_to_string("PNG"))

[Voir le cahier]

0
Quantum7

Une version plus propre de Python3 qui utilise les fonctions standard numpy, matplotlib et PIL. Fusion de la réponse pour l'ouverture à partir d'une URL.

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

pil_im = Image.open('image.png') #Take jpg + png
## Uncomment to open from URL
#import requests
#r = requests.get('https://www.vegvesen.no/public/webkamera/kamera?id=131206')
#pil_im = Image.open(BytesIO(r.content))
im_array = np.asarray(pil_im)
plt.imshow(im_array)
plt.show()

Légère modification de ma réponse ici: Comment afficher PIL Image dans un cahier ipython

0
Punnerud