如果图像是while循环的一部分,则不会加载图像。对于例如以下按预期工作:
from IPython.display import Image
Image(filename='someimage.jpg')
但这不起作用:
while True:
Image(filename='someimage.jpg')
break
更新
如何从列表中显示多个图像?
答案 0 :(得分:13)
这在这里工作正常:
from IPython.display import display, Image
path1 = "/some/path/to/image1.png"
path2 = "/some/path/to/image2.png"
for path in path1, path2:
img = Image(path)
display(img)
答案 1 :(得分:3)
好的,我和上面的apler细节有完全相同的问题。我将通过一个详细的例子,其中IPython用于创建图像。经过多次尝试,我已成功显示文件中的.jpg图像,确认Mac OSX Yosemite可以使用Python + PIL 显示图像。
我不得不卸载PIL,而是使用Pillow,以便正确识别libjpeg库。 Python代码创建图像 - 但它不会显示图像。
我尝试使用:
创建图像f = BytesIO()
PIL.Image.fromarray(a).save(f, 'jpeg')
clear_output(wait = True)
display(Image(data=f.getvalue()))
我在Python中运行这个小程序时看到的是:
<IPython.core.display.Image object>
In :
这个In:看起来是一个IPython提示符。
我正在使用的代码示例似乎专门用于使用IPython Notebook ,它 与IPython或交互式Python相同。
要使用上面的代码(来自Google TensorFlow教程),需要配置一个&#34; IPython Notebook Server&#34;并运行一些名为&#34; Jupyter&#34;。 Jupyter的文档是: http://jupyter-notebook.readthedocs.io/en/latest/
点apler使得很好。我们应该能够使用普通的Python创建一个.jpg文件,并在运行OSX的Mac上显示它。我已经提取了一些代码以显示如何执行此操作。它会创建一个.jpg图像,将其写入文件,然后使用Pillow版本的PIL显示它。 (注意:我必须使用pip卸载原始PIL,然后pip安装Pillow,然后从Ethan.Tira-Thompson.com/Mac_OS_X_Ports.html中选择&#34; libjpeg&#34;库作为.dmg文件现场)。你还需要numpy和scipy.misc模块。
#
# --- Make+Show immediately a simulated Moire pattern as a .jpg file
#
# --- start Python and import this file with: import MakeShowMoire
# --- or use: execfile ("MakeShowMoire.py")
#
# --- import modules we need
from PIL import Image, ImageDraw
import numpy as np
import scipy.misc
#
# --- Ok, lets go..
width = 1020
height = 710
channels = 3
#
img = np.zeros((height, width, channels), dtype=np.uint8)
xx, yy = np.mgrid[:height, :width]
circle = (xx - 100) ** 2 + (yy - 100) ** 2
for y in range(img.shape[0]):
for x in range(img.shape[1]):
r, g, b = circle[y][x], circle[y][x], circle[y][x]
img[y] [x] [0] = r
img[y] [x] [1] = g
img[y] [x] [2] = b
#
# --- now, we have made the image, lets save it
scipy.misc.imsave("testimg.jpg", img)
#
# --- Since we have saved it, we should be able to display it
image = Image.open("testimg.jpg")
image.show()
将此文件另存为MakeShowMoire.py。要运行它,请启动终端会话,然后运行Python。我在darwin上使用Python 2.7.10 [GCC 4.2.1兼容的Apple LLVM 6.0(clang 600.0.39)],Mac OSX是10.10.5 Yosemite。当Python运行时,只需输入:
>>> execfile ("MakeShowMoire.py")
示例应该显示在你的Mac上,在一个名为&#34; tmpblahblah.BMP&#34;的窗口中,当你关闭窗口时它会被调整,但是你的testimg.jpg当然会被保留。 我正在使用&#34;导入MakeShowMoire&#34;在Python提示符下运行该文件,但命名空间不映射到交互式Python会话。如果使用execfile函数,则可以再次使用image.show()重新显示文件内容。希望这很有用。
答案 2 :(得分:2)
在IPython笔记本中工作时,解释器在键入单独命令时会给出响应。
例如:
>>>>a = 5
>>>>a
5
但是如果我们在函数或循环中做同样的事情,我们就不会得到响应。
因此,如果要在循环/函数中显示图像,则必须使用显示功能(IPython.display.display)
from IPython.display import display, Image
for image_path in images: # images is a list of paths
display(Image(image_path))
因此Image函数返回一个图像。在解释器中,它将显示,但否则不会。 为确保显示,我们使用显示功能。
这与print命令类似。在解释器中,没有必要使用print命令来查看变量,而在运行程序时则是。
答案 3 :(得分:1)
我尝试了所选择的答案,以及阳光下的其他一切,但无论我尝试什么,它都只会显示最后一张照片。我终于能够使用matplotlib了。
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def display_photo(path):
print("File: {}".format(path))
img = mpimg.imread(path)
imgplot = plt.imshow(img)
plt.show()
for path in glob.iglob('my_photos/*'):
display_photo(path)
答案 4 :(得分:0)
答案 5 :(得分:0)
导入,该功能可以如下重写。完美打开Windows照片查看器,并显示结果分形图像
import tensorflow as tf
import numpy as np
from PIL import Image
from io import BytesIO
from IPython.display import display
def DisplayFractal(a, fmt='jpeg'):
a_cyclic = (6.28*a/20.0).reshape(list(a.shape)+[1])
img = np.concatenate([10+20*np.cos(a_cyclic),
30+50*np.sin(a_cyclic),
155-80*np.cos(a_cyclic)], 2)
img[a==a.max()] = 0
a = img
a = np.uint8(np.clip(a, 0, 255))
Image.fromarray(a).show()