You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spyder中按顺序渲染图像 目前仅能成功显示最后一张图像

问题根源

你当前的代码仅显示最后一张图像,是因为skimage.io.imshow底层依赖Matplotlib绘图库,默认复用同一个活跃画布绘制内容,后续的绘图操作会直接覆盖前序的画布内容,且你没有触发画布渲染的操作,所以最终仅保留最后一次imshow的结果。
如果你的Spyder配置的是Inline绘图模式(默认在IPython控制台内嵌显示图像),也会出现所有绘图堆叠仅显示最后一张的情况,切换为Automatic后端(独立窗口显示)可以获得更好的交互体验。

解决方案

根据你的使用需求可以选择对应方案:

  • 场景1:逐张手动查看(关闭当前图像窗口后自动弹出下一张)
    需要导入matplotlib.pyplot,每次调用imshow后执行plt.show()阻塞渲染,直到手动关闭当前窗口才会执行后续代码,参考代码:
    from skimage.io import imread, imshow
    import matplotlib.pyplot as plt
    
    img_5 = imread('C:/abc1.png')
    imshow(img_5)
    plt.show()
    
    img_6 = imread('C:/abc2.png')
    imshow(img_6)
    plt.show()
    
  • 场景2:同窗口并列显示所有图像
    用Matplotlib的子图功能把所有图像放在同一个窗口内,方便对比查看,参考代码:
    from skimage.io import imread, imshow
    import matplotlib.pyplot as plt
    
    # 读取所有图像
    img_5 = imread('C:/abc1.png')
    img_6 = imread('C:/abc2.png')
    
    # 创建1行2列的子图布局
    plt.subplot(1, 2, 1)
    imshow(img_5)
    plt.title('第一张图像')
    
    plt.subplot(1, 2, 2)
    imshow(img_6)
    plt.title('第二张图像')
    
    plt.show() # 统一渲染所有子图
    
  • 场景3:自动轮播依次显示
    不需要手动关窗,每张图像停留固定时长后自动切换到下一张,参考代码:
    from skimage.io import imread, imshow
    import matplotlib.pyplot as plt
    
    img_5 = imread('C:/abc1.png')
    imshow(img_5)
    plt.pause(3) # 停留3秒,数值可自定义
    plt.clf() # 清空当前画布准备下一张绘图
    
    img_6 = imread('C:/abc2.png')
    imshow(img_6)
    plt.pause(3)
    plt.clf()
    
    plt.show() # 最后一张停留到手动关闭
    

内容的提问来源于stack exchange,提问作者user15761564

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:00:01