在Jupyter Notebook中输出图像

军人

以下代码能够按照Jupyter笔记本的预期打印/输出图像:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from IPython import display
from scipy.misc import toimage
import numpy as np

n = 3
for _ in range(n):
    (toimage(np.random.rand(32, 32, 3)))
    print("----------------------------")

但是,一旦将其放入函数中,它将停止工作。为什么?我该如何解决?

def print_images(n=3):
    for _ in range(n):
        (toimage(np.random.rand(32, 32, 3)))
        print("----------------------------")

print_images()
电话

display.display_png 作品:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from IPython import display
from scipy.misc import toimage
import numpy as np

n = 3
for _ in range(n):
    display.display_png(toimage(np.random.rand(32, 32, 3)))
    print("----------------------------")

def print_images(n=3):
    for _ in range(n):
        display.display_png(toimage(np.random.rand(32, 32, 3)))
        print("----------------------------")

print_images()

您可以在IPythondisplay模块文档中阅读更多有关其工作原理以及其他方法失败的信息

细节

返回的对象toimage有一个_repr_png_方法。笔记本将调用此功能以生成您实际看到的图像。无论出于何种原因(我相信您都可以通过深入研究文档来发现它们),x._repr_png_()只要在单元格的顶级范围内toimage生成任何实例的调用,笔记本都会自动调用x但是,如果toimage在更深层的嵌套范围内运行,_repr_png_则不会自动调用。相反,您必须通过显式调用来手动使用相同的显示设备display.display_png

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章