2013-10-03 122 views
5

我试图在Matplotlib中绘制一个2D图像(从PNG导入)并将其旋转任意角度。我想创建一个简单的动画,显示一个对象随着时间的旋转,但现在我只是想旋转图像。我试过几个变化在下面的代码,但没有成功:在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() 

我敢肯定,我失去了一些东西,但我一直无法从matplotlib文档和示例看着办吧。

谢谢!

回答

7

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

貌似ndimage.rotate()是我是后。谢谢! – user2844064