简体   繁体   中英

Creating moving images in python

I am wondering what's the best approach to turn a large number of images into a moving one in Python. A lot of examples I've found seem to deal with actual videos or video games, such as pygame, which seems over complicated for what I'm looking to do.

I have created a loop, and would like the image to update every time the code runs through the loop. Is there a possibly a method in python to overplot each image and erase the previous image with each iteration?

sweeps_no = 10
for t in range(sweeps_no):

    i = np.random.randint(N)
    j = np.random.randint(N)

    arr = nearestneighbours(lat, N, i, j)
    energy = delta_E(lat[i,j], arr, J)
    if energy <= 0:
        matrix[i,j] *= matrix[i,j]
    elif np.exp(energy/T) >= np.random.random():
        matrix[i,j] *= -matrix[i,j]
    else:
        matrix[i,j] = matrix[i,j]
    t +=1
    print t
    res.append(switch)
    image = plt.imshow(lat)
    plt.show()

Also, I can't understand why the loop above doesn't result in 10 different images showing up when the image is contained in the loop.

You can update a single figure using fig.canvas.draw() after your call to imshow() . It is important to include a pause ie plt.pause(2) , so that you can see the changes to your figure.

The following is a runnable example:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()  # create the figure

for i in range(10):

    data = np.random.randn(25).reshape(5,5)  # some fake data

    plt.imshow(data)

    fig.canvas.draw()
    plt.pause(2)   # pause for 2 seconds

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM