zoukankan      html  css  js  c++  java
  • python matplotlib 播放图片变化过程

       最近想将原图片和处理后的图片放在一起观察图片的变化过程。但是网上并么有找到有用的示例代码,所以粘出来和大家分享一下。

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import animation
    from PIL import Image
    img_ori = np.array(Image.open('5.png'))
    img_tran = np.load('img_tran.npy')
    fig = plt.figure()
    plt.subplot(1, 2, 1)
    plt.imshow(img_ori)
    plt.subplot(1, 2, 2)
    i = [i for i in range(200) if i % 5 == 0]
    def update(i):
    return plt.imshow(img_tran[i].reshape([28, 28]))
    ani = animation.FuncAnimation(fig, update)
    # ani.save('contrast.mp4', fps=15,
    # extra_args=['-vcodec', 'libx264'],
    # writer='ffmpeg_file')
    ani.save('contrast.gif', writer='imagemagick', fps=30)
    # plt.show()

    简单分析一下,输入是一张手写数字的图片,实际上我是将这张图片经过了一个自编码网络,通过求输入与输出的距离,然后反向传播迭代权重和偏置。最后形成一张接近原图的图像。具体的就不细讲了,这里我主要是讲如何显示出来这些数据。我将迭代生成的图像保存在‘img_train.npy’文件里。

    i = [i for i in range(200) if i % 5 == 0]

    其实,img_tran是一个维度为(1000,784, 1)的数组,我就显示了其中一部分,i 也就是一个索引列表,索引要显示的图像。后面就是利用animation.FuncAnimation函数显示动图,该函数的具体细节可以自行google。然后由于博客园上传不了视频,我就在下面加了一行保存为gif的代码。最后可能你会遇到这样的问题,

    KeyError: 'ffmpeg'

    安装这个库就行。具体参考http://www.jianshu.com/p/c41d4127cc7d

    运行结果是

  • 相关阅读:
    笨方法学python(本文为阅读时从此书摘录的笔记) 第一天
    关于C++中的虚拟继承的一些总结
    用提高效率的暴力法求3000以内的素数
    DAY 155 python中parse模块
    DAY 154 python自带的hmac模块
    DAY 153 Python中使用pymongo操作mongodb
    DAY 152 hmac模块
    DAY 151 parse模块
    DAY 150 setter&getter&@property
    DAY 149 property和setter装饰器
  • 原文地址:https://www.cnblogs.com/subic/p/7929630.html
Copyright © 2011-2022 走看看