Matplotlib faire pivoter le fichier image de X degrés
Comment puis-je faire pivoter un fichier image et de l'intrigue dans matplotlib?
Je sais que je peux l'ouvrir à l'aide de la LIP et de la faire pivoter, mais cela semble beaucoup trop pour cette simple fonction, que je ne suis probablement pas trouver.
J'ai trouvé ce bout de code ici, mais ne semble pas fonctionner:
from matplotlib import pyplot, image, transforms
img = image.imread('filename.png')
pyplot.ion()
fig = pyplot.figure()
ax = fig.add_subplot(111)
for degree in range(360):
pyplot.clf()
tr = transforms.Affine2D().rotate_deg(degree)
ax.imshow(img, transform=tr)
fig.canvas.draw()
OriginalL'auteur f.rodrigues | 2015-07-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
rotate
descipy.ndimage
:Une rotation de l'image autour du centre (voir docs).
Edit:
Je veux que vous une sorte d'animation (je ne sais pas comment vous allez utiliser la rotation de l'image, donc je ne peux que spéculer), vous êtes peut-être mieux d'utiliser un certain type de jeu/bibliothèque de graphiques, par exemple Pygame. Ici, vous pouvez faire pivoter une image, des performances (grâce à la SDL sous-jacent) à l'aide de
pygame.transform.rotate
et blitting qui a tourné à l'image sur l'écran.Essayez ceci (à l'aide d'une image lena.jpg) afin d'obtenir une douceur de rotation de l'image:
Vous voulez animer une image qui tourne? À partir de votre question, j'ai juste compris que tu voulais faire pivoter, puis de l'afficher à l'utilisateur. Dans ce cas, peut-être matplotlib n'est pas la bonne bibliothèque pour le faire et vous êtes mieux avec Pygame (regardez
pygame.transform.rotate
), qui est basé sur la SDL et devrait fournir un meilleur rendement en ce qui concerne les animations, comme la rotation, etc.Le programme que je suis en train de faire est de l'affichage d'une série d'informations sur un véhicule (vitesse, trajectoire, ...) que je reçois via le gps, y compris l'azimut(angle), je veux afficher une petite image de voiture dans l'angle supérieur droit de se comporter comme une boussole. J'ai pensé à utiliser pygame, mais il n'a pas la plupart des caractéristiques intéressantes de matplotlib pour traiter des données dynamiques.
OriginalL'auteur adrianus
vous pouvez utiliser le code suivant, que j'ai trouvé ici:
Comment puis-je faire tourner un matplotlib parcelle à 90 degrés?
OriginalL'auteur Achim
Il semble matplotlib a passé depuis que cette question a été posée, et elle peut désormais nativement en charge des transformations affines des images sans que l'utilisateur n'ait à revenir à des images de bas niveau routines de manipulation.
C'est maintenant documenté sous la forme d'un exemple dans https://matplotlib.org/gallery/images_contours_and_fields/affine_image.html.
Essentiellement, cela nécessite de spécifier les appropriée transformer argument mot-clé. Le code fourni dans la question d'origine devra être mis à jour comme suit:
OriginalL'auteur pelson