2013-10-03 15 views
5

Próbuję wykreślić obraz 2D w Matplotlib (zaimportowany z png) i obrócić go o dowolne kąty. Chcę utworzyć prostą animację pokazującą obrót obiektu w czasie, ale na razie próbuję tylko obrócić obraz. Próbowałem kilka wariacji na poniższym kodzie bez powodzenia:Obracanie obrazu w Matplotlib

import matplotlib.pyplot as plt 
import matplotlib.transforms as tr 
import matplotlib.cbook as cbook 

image_file = cbook.get_sample_data('ada.png') 
image = plt.imread(image_file) 

imAx = plt.imshow(image) 
rot = tr.Affine2D().rotate_deg(30) 
imAx.set_transform(imAx.get_transform()+rot) 

plt.axis('off') # clear x- and y-axes 
plt.show() 

jestem pewien, że jestem brakuje czegoś, ale nie udało się ustalić to z docs matplotlib i przykładów.

Dzięki!

Odpowiedz

7

Spójrz na kod this:

import scipy 
from scipy import ndimage 
import matplotlib.pyplot as plt 
import numpy as np 

lena = scipy.misc.lena() 
lx, ly = lena.shape 
# Copping 
crop_lena = lena[lx/4:-lx/4, ly/4:-ly/4] 
# up <-> down flip 
flip_ud_lena = np.flipud(lena) 
# rotation 
rotate_lena = ndimage.rotate(lena, 45) 
rotate_lena_noreshape = ndimage.rotate(lena, 45, reshape=False) 

plt.figure(figsize=(12.5, 2.5)) 


plt.subplot(151) 
plt.imshow(lena, cmap=plt.cm.gray) 
plt.axis('off') 
plt.subplot(152) 
plt.imshow(crop_lena, cmap=plt.cm.gray) 
plt.axis('off') 
plt.subplot(153) 
plt.imshow(flip_ud_lena, cmap=plt.cm.gray) 
plt.axis('off') 
plt.subplot(154) 
plt.imshow(rotate_lena, cmap=plt.cm.gray) 
plt.axis('off') 
plt.subplot(155) 
plt.imshow(rotate_lena_noreshape, cmap=plt.cm.gray) 
plt.axis('off') 

plt.subplots_adjust(wspace=0.02, hspace=0.3, top=1, bottom=0.1, left=0, 
        right=1) 

plt.show() 
+0

Wygląda ndimage.rotate() jest to, co było potem. Dzięki! – user2844064