Hoe kan ik een afbeelding uit een bestand in Jupyter Notebook weergeven?

Ik wil graag een IPython-notebookgebruiken als een manier om enkele genoomdiagrammen die ik maak interactief te analyseren met Biopython’s GenomeDiagram-module. Hoewel er uitgebreide documentatie is over het gebruik van matplotlibom grafieken inline te krijgen in IPython-notebook, gebruikt GenomeDiagram de ReportLab-toolkit waarvan ik denk dat deze niet wordt ondersteund voor inline grafieken in IPython.

Ik dacht echter dat een manier om dit te omzeilen zou zijn om het plot/genoomdiagram naar een bestand te schrijven en dan de afbeelding inline te openen, wat hetzelfde resultaat zou hebben met zoiets als dit:

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

Ik weet echter niet hoe ik dit moet doen – of weet niet of het mogelijk is. Dus weet iemand of afbeeldingen kunnen worden geopend/weergegeven in IPython?


Antwoord 1, autoriteit 100%

Met dank aan dit bericht, je kunt het volgende doen:

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

(officieel documenten)


Antwoord 2, autoriteit 62%

Als u een afbeelding op deze manier in een lus probeert weer te geven, moet u de afbeeldingsconstructor in een weergavemethode plaatsen.

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

Antwoord 3, autoriteit 9%

Let op, tot nu toe geposte oplossingen werken alleen voor png en jpg!

Als u het nog eenvoudiger wilt zonder verdere bibliotheken te importeren of als u een geanimeerd of niet-geanimeerd GIF-bestand in uw Ipython Notebook wilt weergeven. Transformeer de regel waar je hem wilt weergeven om af te waarderen en gebruik deze leuke korte hack!

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

Antwoord 4, autoriteit 7%

Hiermee wordt een .jpgafbeelding geïmporteerd en weergegeven in Jupyter (getest met Python 2.7 in Anaconda-omgeving)

from IPython.display import display
from PIL import Image
path="/path/to/image.jpg"
display(Image.open(path))

Mogelijk moet u PIL installeren

in Anaconda doe je dit door te typen

conda install pillow

Antwoord 5, autoriteit 3%

Als je een groot aantal afbeeldingen efficiënt wilt weergeven, raad ik aan om IPyPlot-pakket

te gebruiken

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

Er zijn enkele andere nuttige functies in dat pakket waar u afbeeldingen in interactieve tabbladen kunt weergeven (apart tabblad voor elk label / klasse) dat zeer nuttig is voor alle ML-classificatietaken.


Antwoord 6, Autoriteit 3%

U kunt gebruiken in HTML-code in Markdown Section:
Voorbeeld:

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

Antwoord 7, Autoriteit 2%

Courtesy of Deze pagina, vond ik dit gewerkt toen de bovenstaande suggesties niet deed:

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

Antwoord 8, Autoriteit 2%

Een schonere Python3-versie die standaard numpe, matplotlib en pil gebruikt. Het fuseren van het antwoord voor het openen van 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()

Antwoord 9

from IPython.display import Image
Image(filename =r'C:\user\path')

Ik heb enkele oplossingen gezien en sommige zullen niet werken vanwege de RAW-directory, bij het toevoegen van codes zoals hierboven, vergeet niet om ‘R’ vóór de map toe te voegen. Dit moet dit soort fout vermijden: (Unicode-fout) ‘Unicodeescape’ -codec kan niet decoderen in positie 2-3: afgeknotte \ UXXXXXXXX ESCAPE


Antwoord 10

Een andere optie voor het plotten van inline van een reeks afbeeldingen kan zijn:

import IPython
def showimg(a):
    IPython.display.display(PIL.Image.fromarray(a))

waar a is een array

a.shape
(720, 1280, 3)

Antwoord 11

Bij gebruik van GenomeDiagrammet JUPYTER (IPYHON) is de eenvoudigste manier om afbeeldingen weer te geven door de genomediagram naar een PNG-afbeelding te converteren. Dit kan worden ingepakt met behulp van een IPYTHON.Display.image-object om het weer te geven in de 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"))

[Zie notitieboek]


Antwoord 12

Een andere optie is:

from matplotlib import pyplot as plt 
from io import BytesIO
from PIL import Image
import Ipython
f = BytesIO()
plt.savefig(f, format='png')
Ipython.display.display(Ipython.display.Image(data=f.getvalue()))
f.close()

Other episodes