【问题标题】:Rotate an image in Matplotlib在 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 文档和示例中弄清楚。

谢谢!

【问题讨论】:

    标签: python matplotlib image-rotation


    【解决方案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() 是我所追求的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多