如何在Jupyter Notebook中显示文件中的图像?

zac*_*ach 156 python ipython jupyter-notebook

我想用IPython笔记本作为交互式分析我用Biopython GenomeDiagram模块制作的一些基因组图表的方法.虽然有关于如何matplotlib在IPython笔记本中使用内联图形的大量文档,但GenomeDiagram使用了ReportLab工具包,我认为它不支持IPython中的内联图形.

然而,我想,解决这个问题的方法是将绘图/基因组图表写入文件,然后打开内联图像,这将具有相同的结果,如下所示:

gd_diagram.write("test.png", "PNG")
display(file="test.png")
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何做到这一点 - 或者知道它是否可行.那么有人知道图像是否可以在IPython中打开/显示?

zac*_*ach 273

感谢这篇文章,您可以执行以下操作:

from IPython.display import Image
Image(filename='test.png') 
Run Code Online (Sandbox Code Playgroud)

(官方文件)

  • 如果在循环内,这不显示图像 (58认同)
  • 大多数人都想要DrMcCleod的回答. (6认同)
  • 在函数调用内部时,这不起作用 (5认同)
  • 这只适用于我,如果我将Image(filename ='test.png')传递给显示,如下面一个帖子所示:`来自IPython.core.display import图像,显示`<b />`display(图像(文件名) = 'test.png'))` (3认同)

DrM*_*eod 187

如果您尝试在循环内以这种方式显示图像,则需要将Image构造函数包装在显示方法中.

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))
Run Code Online (Sandbox Code Playgroud)

  • 由于IPython Notebook仅显示单元格中的最后一个返回值,因此,只要您有来自同一单元格的两个输出,就需要使用'display'方法。有关更多信息,请参见[此问题](http://stackoverflow.com/questions/34398054/ipython-notebook-cell-multiple-outputs)。 (6认同)
  • 为什么?(不要告诉我,否则它不起作用。请解释为什么在循环中需要对“显示”的调用,但如果您只显示一张图像则不需要)。 (4认同)
  • 我想知道,我们如何平铺图像?例如显示一组 4x4 的图像。 (3认同)
  • 你是我的英雄 - 我一直在寻找这个两天。 (2认同)

Phi*_*arz 29

注意,直到现在发布的解决方案只适用于png和jpg!

如果您希望在不导入更多库的情况下更容易,或者想要在Ipython Notebook中显示动画或非动画GIF文件.将要显示它的行转换为markdown并使用这个漂亮的短黑客!

![alt text](test.gif "Title")
Run Code Online (Sandbox Code Playgroud)

  • 将图像放在与Jupyter笔记本相同的文件夹中,或者代替"test.gif",使用"relative/path/test.gif" (2认同)

Con*_*ett 17

这将.jpg在Jupyter中导入并显示图像(在Anaconda环境中使用Python 2.7进行测试)

from IPython.display import display
from PIL import Image


path="/path/to/image.jpg"
display(Image.open(path))
Run Code Online (Sandbox Code Playgroud)

您可能需要安装PIL

在Anaconda这是通过打字完成的

conda install pillow
Run Code Online (Sandbox Code Playgroud)


Kar*_*Żak 15

如果你想有效地显示大量图像,我建议使用IPyPlot 包

import ipyplot

ipyplot.plot_images(images_array, max_images=20, img_width=150)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

该包中还有一些其他有用的功能,您可以在其中显示交互式选项卡(每个标签/类别的单独选项卡)中的图像,这对所有 ML 分类任务非常有帮助。

在此处输入图片说明

  • 这在单个图像上存在一些渲染问题,无法正确放大(显示的内容不会增长以适合放大的图像)... (2认同)

小智 12

您可以在 Markdown 部分的 html 代码中使用:例如:

 <img src="https://www.tensorflow.org/images/colab_logo_32px.png" />
Run Code Online (Sandbox Code Playgroud)


Aff*_*tus 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()))
Run Code Online (Sandbox Code Playgroud)


Pun*_*rud 8

使用标准 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()
Run Code Online (Sandbox Code Playgroud)


小智 5

from IPython.display import Image

Image(filename =r'C:\user\path')
Run Code Online (Sandbox Code Playgroud)

我已经看到了一些解决方案,有些解决方案由于原始目录而无法工作,当添加上面的代码时,请记住在目录前添加 'r' 。这应该避免这种错误:(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXXX escape


Tai*_*aie 5

如果您希望将图像从本地主机嵌入到 ipython 笔记本中,您可以执行以下操作:

首先:找到当前本地路径:

# show current directory
import os
cwd = os.getcwd()
cwd
Run Code Online (Sandbox Code Playgroud)

例如,结果将是:

'C:\\Users\\lenovo\\Tutorials'
Run Code Online (Sandbox Code Playgroud)

接下来,按如下方式嵌入您的图像:

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))
Run Code Online (Sandbox Code Playgroud)

确保在 jpg、jpeg 或 png 中选择正确的图像类型。