Come posso visualizzare un'immagine da un file in Jupyter Notebook?


190

Vorrei usare un notebook IPython come un modo per analizzare interattivamente alcuni grafici del genoma che sto realizzando con il GenomeDiagrammodulo di Biopython . Sebbene vi sia un'ampia documentazione su come utilizzare matplotlibper ottenere grafici in linea nel notebook IPython, GenomeDiagram utilizza il toolkit ReportLab che non credo sia supportato per la rappresentazione grafica in linea in IPython.

Stavo pensando, tuttavia, che un modo per aggirare questo sarebbe scrivere il diagramma trama / genoma in un file e quindi aprire l'immagine in linea che avrebbe lo stesso risultato con qualcosa del genere:

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

Tuttavia, non riesco a capire come farlo - o sapere se è possibile. Qualcuno sa se le immagini possono essere aperte / visualizzate in IPython?

Risposte:


335

Per gentile concessione di questo post , puoi fare quanto segue:

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

( documenti ufficiali )


Meglio usare l'API pubblica senza accedere agli interni: from IPython.display import Imagedovrebbe funzionare dallo 0.13.
Tomyun,

65
questo non visualizza l'immagine se all'interno di un loop
muon

6
Molte persone vorrebbero la risposta di DrMcCleod.
AturSams,

3
Questo funziona solo per me se passo immagine (nome file = 'test.png') da visualizzare, come raccomandato in una discussione qui sotto: from IPython.core.display import Image, display<b /> display(Image(filename='test.png'))
John Strong

1
Nel caso in cui desideri che l'immagine venga mostrata anche in modalità presentazione diapositive (con cui corri jupyter nbconvert mynotebook.ipynb --to slides --post serve), il percorso dell'immagine dovrebbe iniziare in /modo che sia un percorso assoluto dalla radice web, ovvero![alt text](/test.jpg "Some Title")
ccpizza,

215

Se si sta tentando di visualizzare un'immagine in questo modo all'interno di un ciclo, è necessario avvolgere il costruttore di immagini in un metodo di visualizzazione.

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))

1
Perché? (Non ditemi che altrimenti non funziona. Spiegate perché questa chiamata a "display" è necessaria in un ciclo, ma non se si rimuove solo un'immagine).
Kris

10
Poiché i Notebook IPython mostrano solo l'ultimo valore restituito in una cella, quindi ogni volta che si hanno due output dalla stessa cella sarà necessario utilizzare il metodo 'display'. Vedi questa domanda per di più.
DrMcCleod

1
Sei il mio eroe - lo cerco da due giorni.
ZaxR,

1
Questo è fantastico Come farei in modo che l'immagine successiva sostituisca quella esistente, come per un effetto animato mentre l'immagine cambia nel tempo?
blissweb,

2
Mi chiedevo, come abbiamo potuto affiancare le immagini? Ad esempio per mostrare un gruppo di immagini 4x4.
gmagno,

31

Nota, fino ad ora le soluzioni pubblicate funzionano solo per png e jpg!

Se lo desideri ancora più facilmente senza importare ulteriori librerie o vuoi visualizzare un file GIF animato o non animato sul tuo Notebook Ipython. Trasforma la linea in cui vuoi visualizzarla in markdown e usa questo bel trucco corto!

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

2
metti l'immagine nella stessa cartella del notebook Jupyter, o invece di "test.gif", usa "relative / path / test.gif"
Philipp Schwarz,

23

Ciò importerà e visualizzerà .jpgun'immagine in Jupyter (testato con Python 2.7 in ambiente Anaconda)

from IPython.display import display
from PIL import Image


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

Potrebbe essere necessario installare PIL

in Anaconda questo viene fatto digitando

conda install pillow

8

Per gentile concessione di questa pagina, ho trovato che funzionava quando i suggerimenti sopra non hanno funzionato:

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()))

4

È possibile utilizzare nel codice HTML nella sezione markdown: esempio:

 <img src="https://www.tensorflow.org/images/colab_logo_32px.png" />

2

Una versione più pulita di Python3 che utilizza numpy standard, matplotlib e PIL. Unire la risposta per l'apertura dall'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()

2

Se si desidera visualizzare in modo efficiente un gran numero di immagini, si consiglia di utilizzare il pacchetto IPyPlot

import ipyplot

ipyplot.plot_images(images_array, max_images=20, img_width=150)

inserisci qui la descrizione dell'immagine

Esistono altre utili funzioni in quel pacchetto in cui è possibile visualizzare immagini in schede interattive (scheda separata per ciascuna etichetta / classe) che è molto utile per tutte le attività di classificazione ML.

inserisci qui la descrizione dell'immagine


0

Quando si utilizza GenomeDiagramcon Jupyter (iPython), il modo più semplice per visualizzare le immagini è convertire il diagramma genoma in un'immagine PNG. Questo può essere spostato usando un oggetto IPython.display.Image per visualizzarlo nel notebook.

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"))

[Vedi Notebook]

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.