在 Matplotlib 中旋转图像

Posted

技术标签:

【中文标题】在 Matplotlib 中旋转图像【英文标题】:Rotate an image in Matplotlib 【发布时间】:2013-10-10 15:26:36 【问题描述】:

我正在尝试在 Matplotlib 中绘制 2D 图像(从 png 导入)并将其旋转任意角度。我想创建一个简单的动画来显示对象随时间的旋转,但现在我只是想旋转图像。我尝试了以下代码的几种变体,但均未成功:

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 文档和示例中弄清楚。

谢谢!

【问题讨论】:

【参考方案1】:

看看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()

【讨论】:

看起来 ndimage.rotate() 是我所追求的。谢谢!

以上是关于在 Matplotlib 中旋转图像的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 图形图像转 base64

Py之matplotlib:matplotlib库图表绘制中常规设置大全(交互模式清除原有图像设置横坐标显示文字/旋转角度添加图例绘图布局自动调整图像显示图像暂停)

使用python 3.6中的matplotlib.image在python中打开.jpg图像

如何使用 matplotlib blitting 将 matplot.patches 添加到 wxPython 中的 matplotlib 图?

Matplot相关

python OpenCV 使用matplotlib显示图像