मैं ज्यूपिटर नोटबुक में एक फ़ाइल से एक छवि कैसे प्रदर्शित कर सकता हूं?


190

मैं IPython नोटबुक का उपयोग करना चाहता हूं, ताकि मैं बायोपिथॉन के GenomeDiagramमॉड्यूल के साथ कुछ जीनोम चार्ट्स का अंतःक्रियात्मक विश्लेषण कर सकूं । matplotlibIPython नोटबुक में ग्राफ़ इनलाइन प्राप्त करने के तरीके का उपयोग करने के बारे में व्यापक प्रलेखन है , वहीं GenomeDiagram ReportLab टूलकिट का उपयोग करता है जो मुझे नहीं लगता कि IPython में इनलाइन ग्राफ़िंग के लिए समर्थित है।

हालाँकि, मैं सोच रहा था कि इसके आस-पास एक तरह से एक फ़ाइल के लिए प्लॉट / जीनोम आरेख लिखना होगा और फिर छवि इनलाइन को खोलना होगा, जिसका परिणाम कुछ इस तरह होगा:

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

हालाँकि, मैं यह पता नहीं लगा सकता कि यह कैसे करना है - या पता है कि क्या यह संभव है। तो क्या किसी को पता है कि क्या इमेज को आइपीथॉन में खोला / प्रदर्शित किया जा सकता है?

जवाबों:


334

इस पद के सौजन्य से , आप निम्न कार्य कर सकते हैं:

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

( आधिकारिक डॉक्स )


यह बेहतर है कि इंटर्नल तक पहुँचने के बिना सार्वजनिक एपीआई का उपयोग करें: from IPython.display import Image0.13 के बाद से काम करना चाहिए।
तोमुन

65
यह छवि को प्रदर्शित नहीं करता है अगर एक लूप के अंदर
म्यूऑन

6
ज्यादातर लोग DrMcCleod का जवाब चाहते हैं।
AturSams

3
यह केवल मेरे लिए काम करता है अगर मैं छवि (फ़ाइल नाम = 'test.png') पास करता हूं, जैसा कि नीचे दिए गए धागे में सुझाया गया है: from IPython.core.display import Image, display<b /> display(Image(filename='test.png'))
जॉन स्ट्रांग

1
यदि आप चाहते हैं कि छवि स्लाइड प्रस्तुति मोड में भी दिखाई दे (जिसे आप चलाते हैं jupyter nbconvert mynotebook.ipynb --to slides --post serve) तो छवि पथ को इसके साथ शुरू करना चाहिए /ताकि यह वेब रूट से एक पूर्ण पथ हो, अर्थात![alt text](/test.jpg "Some Title")
ccpizza

214

यदि आप लूप के अंदर इस तरह से एक छवि प्रदर्शित करने की कोशिश कर रहे हैं, तो आपको छवि निर्माता को एक प्रदर्शन विधि में लपेटने की आवश्यकता है।

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
क्यों? (मुझे नहीं बताएं कि अन्यथा यह काम नहीं करता। कृपया बताएं कि 'प्रदर्शन' के लिए यह कॉल लूप में क्यों आवश्यक है लेकिन यदि आप सिर्फ एक छवि को फैलाते हैं तो नहीं)।
Kris

10
क्योंकि आईपीथॉन नोटबुक केवल एक सेल में अंतिम रिटर्न मान दिखाती है, इसलिए जब भी आपके पास एक ही सेल से दो आउटपुट होंगे, तो आपको 'डिस्प्ले' विधि का उपयोग करना होगा। इस प्रश्न को और देखें ।
DrMcCleod

1
आप मेरे हीरो हैं - मैं दो दिनों से इसकी तलाश कर रहा था।
ZaxR

1
यह भी खूब रही। मैं अगली छवि को मौजूदा कैसे बदलूंगा, जैसे कि एक एनिमेटेड प्रभाव के लिए समय के साथ एक छवि बदल जाती है?
ब्लिसवेब

2
मैं सोच रहा था, हम छवियों को कैसे टाइल कर सकते हैं? उदाहरण के लिए छवियों का 4x4 समूह दिखाना।
गमग्नो

31

ध्यान दें, अब तक पोस्ट किए गए समाधान केवल png और jpg के लिए काम करते हैं!

यदि आप आगे पुस्तकालयों को आयात किए बिना इसे और भी आसान चाहते हैं या आप अपने इफथॉन नोटबुक में एक एनिमेटेड या एनिमेटेड जीआईएफ फ़ाइल नहीं दिखाना चाहते हैं। उस पंक्ति को ट्रांसफ़ॉर्म करें जहाँ आप इसे मार्कडाउन में दिखाना चाहते हैं और इस अच्छे शॉर्ट हैक का उपयोग करें!

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

2
ज्यूपिटर नोटबुक के रूप में एक ही फ़ोल्डर में छवि डालें, या "test.gif" के बजाय, "रिश्तेदार / पथ / test.gif" का उपयोग करें
फिलिप श्वार्ज़

23

यह .jpgज्यूपिटर में एक छवि को आयात और प्रदर्शित करेगा (एनाकोंडा वातावरण में पायथन 2.7 के साथ परीक्षण किया गया)

from IPython.display import display
from PIL import Image


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

आपको पीआईएल स्थापित करने की आवश्यकता हो सकती है

एनाकोंडा में यह टाइपिंग द्वारा किया जाता है

conda install pillow

8

इस पृष्ठ के सौजन्य से , मैंने पाया कि जब ऊपर दिए गए सुझाव काम नहीं कर रहे थे:

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

आप मार्कडाउन अनुभाग में HTML कोड का उपयोग कर सकते हैं: उदाहरण:

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

2

एक क्लीनर Python3 संस्करण जो मानक सुन्न, matplotlib और PIL का उपयोग करता है। 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

यदि आप कुशलतापूर्वक बड़ी संख्या में चित्र प्रदर्शित करना चाहते हैं तो मैं IPyPlot पैकेज का उपयोग करने की सलाह देता हूं

import ipyplot

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

यहां छवि विवरण दर्ज करें

उस पैकेज में कुछ अन्य उपयोगी कार्य हैं जहां आप इंटरेक्टिव टैब (प्रत्येक लेबल / वर्ग के लिए अलग टैब) में चित्र प्रदर्शित कर सकते हैं जो सभी एमएल वर्गीकरण कार्यों के लिए बहुत उपयोगी है।

यहां छवि विवरण दर्ज करें


0

GenomeDiagramJupyter (iPython) के साथ उपयोग करते समय, छवियों को प्रदर्शित करने का सबसे आसान तरीका GenomeDiagram को PNG छवि में परिवर्तित करना है। इसे नोटबुक में प्रदर्शित करने के लिए IPython.display.Image ऑब्जेक्ट का उपयोग करके लपेटा जा सकता है।

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

[नोटबुक देखें]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.