![](/img/trans.png)
[英]How can I open an existing Jupyter notebook programmatically from inside an open 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 中打開/顯示?
如果您嘗試在循環中以這種方式顯示 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))
在 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.