2013-10-03 30 views
5

Tôi đang cố vẽ một hình ảnh 2D trong Matplotlib (được nhập từ một png) và xoay nó bằng các góc tùy ý. Tôi muốn tạo ra một hình ảnh động đơn giản cho thấy sự quay của một đối tượng theo thời gian, nhưng bây giờ tôi chỉ đang cố xoay hình ảnh. Tôi đã thử một số biến thể trên mã sau đây mà không thành công:Xoay một hình ảnh trong 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() 

Tôi chắc chắn tôi thiếu một số thứ, nhưng tôi không thể tìm ra từ tài liệu và ví dụ matplotlib.

Cảm ơn!

Trả lời

7

Hãy xem this mã:

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

Hình như ndimage.rotate() là những gì tôi đã sau. Cảm ơn! – user2844064