簡體   English   中英

如何在 Jupyter Notebook 中顯示文件中的圖像?

[英]How can I display an image from a file in Jupyter Notebook?

我想使用IPython 筆記本作為交互式分析我使用 Biopython 的GenomeDiagram模塊制作的一些基因組圖表的一種方式。 雖然有大量關於如何使用matplotlib在 IPython 筆記本中獲取內聯圖形的文檔,但 GenomeDiagram 使用 ReportLab 工具包,我認為 IPython 中的內聯圖形不支持該工具包。

然而,我在想,解決這個問題的一種方法是將繪圖/基因組圖寫到一個文件中,然后打開內聯圖像,這將具有相同的結果,如下所示:

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

但是,我無法弄清楚如何做到這一點 - 或者知道它是否可能。 那么有誰知道圖像是否可以在 IPython 中打開/顯示?

感謝這篇文章,您可以執行以下操作:

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

官方文檔

如果您嘗試在循環中以這種方式顯示 Image,則需要將 Image 構造函數包裝在 display 方法中。

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

請注意,到目前為止發布的解決方案僅適用於 png 和 jpg!

如果您希望在不導入更多庫的情況下更輕松,或者您想在 Ipython Notebook 中顯示動畫或非動畫 GIF 文件。 將要顯示它的行轉換為降價並使用這個漂亮的簡短技巧!

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

這將在 Jupyter 中導入並顯示.jpg圖像(在 Anaconda 環境中使用 Python 2.7 測試)

from IPython.display import display
from PIL import Image


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

您可能需要安裝 PIL

在 Anaconda 中,這是通過鍵入來完成的

conda install pillow

您可以在降價部分的 html 代碼中使用:示例:

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

如果您想有效地顯示大量圖像,我建議使用IPyPlot 包

import ipyplot

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

在此處輸入圖像描述

該包中還有一些其他有用的功能,您可以在交互式選項卡中顯示圖像(每個標簽/類的單獨選項卡),這對所有 ML 分類任務非常有幫助。

在此處輸入圖像描述

感謝這個頁面,當上面的建議沒有時,我發現這很有效:

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

使用標准 numpy、matplotlib 和 PIL 的更簡潔的 Python3 版本。 合並從 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()
from IPython.display import Image

Image(filename =r'C:\user\path')

我已經看到了一些解決方案,有些由於原始目錄而無法工作,在添加上述代碼時,請記住在目錄之前添加“r”。 這應該避免這種錯誤:(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

如果您希望將圖像從本地主機嵌入到 ipython 筆記本中,您可以執行以下操作:

第一:找到當前本地路徑:

# show current directory
import os
cwd = os.getcwd()
cwd

例如,結果將是:

'C:\\Users\\lenovo\\Tutorials'

接下來,按如下方式嵌入您的圖像:

from IPython.display import display
from PIL import Image

path="C:\\Users\\lenovo\\Tutorials\\Data_Science\\DS images\\your_image.jpeg"
display(Image.open(path))

確保在 jpg、jpeg 或 png 中選擇正確的圖像類型。

您還可以使用PIL在Jupyter Notebook中顯示圖像文件:

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

這也可以循環工作。

從圖像數組內聯繪制的另一個選項可能是:

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

其中 a 是一個數組

a.shape
(720, 1280, 3)

另一個選擇是:

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

GenomeDiagram與 Jupyter (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"))

[見筆記本]

您可以直接使用它而不是導入 PIL

from IPython.display import Image, display
    
    display(Image(base_image_path))
    

這是使用opencv-python的解決方案,但它會打開忙於等待的新窗口

import cv2 # pip install opencv-python
image = cv2.imread("foo.png")
cv2.imshow('test',image)
cv2.waitKey(duration) # in milliseconds; duration=0 means waiting forever
cv2.destroyAllWindows()

如果您不想在另一個窗口中顯示圖像,請使用matplotlib或其他任何東西cv2.imshow()

import cv2
import matplotlib.pyplot as plt
image = cv2.imread("foo.png")
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM