您可以使用scipy.ndimage
中的rotate
函数:
import scipy.misc
from scipy import ndimage
import matplotlib.pyplot as plt
img = scipy.misc.lena()
plt.figure(figsize=(12, 2))
for degree in range(5):
plt.subplot(151+degree)
rotated_img = ndimage.rotate(img, degree*60)
plt.imshow(rotated_img, cmap=plt.cm.gray)
plt.axis('off')
plt.show()
这将围绕图像中心进行旋转(请参见文档)。
![lena](https://istack.dev59.com/TsVWI.webp)
编辑:
如果您希望进行某种动画(我不知道您将如何使用旋转图像,所以我只能猜测),也许最好使用某种游戏/图形库,例如Pygame。在这里,您可以使用pygame.transform.rotate
将图像旋转一定角度(由于基础的SDL支持),并将旋转后的图像贴到屏幕上以获得更好的性能。
尝试这个(使用一张名为lena.jpg的图片),以获得平滑旋转的图像:
import pygame
pygame.init()
screen = pygame.display.set_mode([400, 400])
pygame.display.set_caption('Rotating image example')
clock = pygame.time.Clock()
img = pygame.image.load('lena.jpg').convert()
img_rect = img.get_rect(center = screen.get_rect().center)
degree = 0
while degree < 360:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
rot_img = pygame.transform.rotate(img, degree)
img_rect = rot_img.get_rect(center = img_rect.center)
screen.fill((0, 0, 0))
screen.blit(rot_img, img_rect)
pygame.display.flip()
clock.tick(60)
degree += 1
pygame.quit()
pygame.transform.rotate
),它基于SDL,应该在旋转等动画方面提供更好的性能。 - adrianus