如何在 google colab 中动态(循环)显示图像?

Posted

技术标签:

【中文标题】如何在 google colab 中动态(循环)显示图像?【英文标题】:How can i dynamically (in a loop) show images in google colab? 【发布时间】:2019-03-22 04:52:19 【问题描述】:

我一直在尝试使用 pyplot/matplotlib 来显示图像,因为它们在循环中发生变化,但我无法让任何工作。我基本上无法更新显示的图像。这是复制问题的代码:

f = plt.figure(1)
ax = plt.gca()
show_obj= ax.imshow(np.random.randn(28,28))
for i in range(10):
  print(i)
  # None of these 3 options work
  if True:
    # the image does not update
    show_obj.set_data(np.random.randn(28,28))
    f.canvas.draw()
  if False:
    # image does not update
    ax.clear()
    ax.imshow(np.random.rand(28,28))
    pass
  if False:
    # starts drawing new axes
    f = plt.figure(1)
    ax = plt.gca()
    ax.imshow(np.random.rand(28,28))
  plt.show()

【问题讨论】:

您在寻找Animation in iPython notebook吗? 【参考方案1】:

我测试了这段代码,它可以工作。

from IPython.display import clear_output
import matplotlib.pyplot as plt
from numpy.random import randn
from time import sleep

for i in range(5):
  clear_output()
  plt.imshow(randn(28, 28))
  plt.show()
  sleep(1)

【讨论】:

【参考方案2】:

灵感来自 korsakov 的帖子;这种修改使它更“流畅”,也更合乎逻辑:-)

from IPython.display import clear_output
import matplotlib.pyplot as plt
from numpy.random import randn
from time import sleep

for i in range(5):
  plt.imshow(randn(28, 28))
  plt.show()
  sleep(1)
  clear_output(wait=True)

【讨论】:

【参考方案3】:

如果您想在输出中显示所有图像,可以运行:

import matplotlib.pyplot as plt

for filename in filenames:
    img = plt.imread(filename)
    plt.imshow(img)
    plt.show()

【讨论】:

【参考方案4】:

我的贡献:

import time #optional, just for demo
from matplotlib import pyplot as plt
from IPython.display import clear_output
from cv2 import imread #Hack
from google.colab.patches import cv2_imshow #Hack

#Initializations
ax1 = plt.subplot(2,1,1)
ax2 = plt.subplot(2,1,2)
fig = ax1.get_figure()
path = 'file.png' #your drive temporal file path
line1, = ax1.plot([],[])
line2, = ax2.plot([],[])

#update as many times you wish
line1.set_data([1,2,3,4],[0,8,2,4])
line2.set_data([1,2,3,4],[0,-8,-2,-4])

#Animation purposes
clear_output()
fig.savefig(path, format='png') #Hack
img = imread(path) 
cv2_imshow(img)    
time.sleep(20)     #demo: it show the img even when halted

解释:

无法更新图片的原因是 google.colab 写入了固定的临时文件。 溶胶。自己写图片,自己上传。

【讨论】:

以上是关于如何在 google colab 中动态(循环)显示图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 google colab 中启用拼写检查器(colab 在 linux OS 上运行)?

我们如何在 colab.research.google.com 中使用 Selenium Webdriver?

如何在google colab中有效地使用内存?

如何在 Google 的 Colab 中安装 Python 包?

Google Colab 中的空闲 GPU 内存

运行 R 内核时如何在 google Colab 中访问 shell