围绕枢轴绘制旋转图像 Python
Plot rotated images around a pivot Python
我正在尝试绘制一个图像,该图像必须在 Python 中围绕其角旋转。
我可以编写一个脚本来(某种程度上)完成这项工作,但不能像我希望的那样围绕一个枢轴点:
import matplotlib.pyplot as plt
import PIL
picture= PIL.Image.open('images/sample-image.png')
maxsize = (40*10,30*10)
picture = picture.resize(maxsize,PIL.Image.ANTIALIAS)
comp = picture.im.size[0]
larg = picture.im.size[1]
plt.figure(figsize=(10,5),dpi=300)
plt.xlim((-100,500))
plt.ylim((-100,500))
plt.imshow(picture.rotate(0,expand=True))
plt.imshow(picture.rotate(-15,expand=True))
plt.imshow(picture.rotate(-30,expand=True))
plt.imshow(picture.rotate(-45,expand=True))
plt.imshow(picture.rotate(-90,expand=True))
plt.show()
我得到的结果是:
我希望的结果是:
您可以使用transform
关键字来定义关于某个点的旋转:
import matplotlib.pyplot as plt
from matplotlib.transforms import Affine2D
import PIL
picture = PIL.Image.open('.../Downloads/puzzle.png')
maxsize = (50*10, 50*10)
picture = picture.resize(maxsize, PIL.Image.ANTIALIAS)
plt.figure(figsize=(10, 5), dpi=300)
plt.xlim((-600, 600))
plt.ylim((-600, 600))
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 0) + plt.gca().transData)
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 90) + plt.gca().transData)
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 180) + plt.gca().transData)
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 270) + plt.gca().transData)
我正在尝试绘制一个图像,该图像必须在 Python 中围绕其角旋转。
我可以编写一个脚本来(某种程度上)完成这项工作,但不能像我希望的那样围绕一个枢轴点:
import matplotlib.pyplot as plt
import PIL
picture= PIL.Image.open('images/sample-image.png')
maxsize = (40*10,30*10)
picture = picture.resize(maxsize,PIL.Image.ANTIALIAS)
comp = picture.im.size[0]
larg = picture.im.size[1]
plt.figure(figsize=(10,5),dpi=300)
plt.xlim((-100,500))
plt.ylim((-100,500))
plt.imshow(picture.rotate(0,expand=True))
plt.imshow(picture.rotate(-15,expand=True))
plt.imshow(picture.rotate(-30,expand=True))
plt.imshow(picture.rotate(-45,expand=True))
plt.imshow(picture.rotate(-90,expand=True))
plt.show()
我得到的结果是:
我希望的结果是:
您可以使用transform
关键字来定义关于某个点的旋转:
import matplotlib.pyplot as plt
from matplotlib.transforms import Affine2D
import PIL
picture = PIL.Image.open('.../Downloads/puzzle.png')
maxsize = (50*10, 50*10)
picture = picture.resize(maxsize, PIL.Image.ANTIALIAS)
plt.figure(figsize=(10, 5), dpi=300)
plt.xlim((-600, 600))
plt.ylim((-600, 600))
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 0) + plt.gca().transData)
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 90) + plt.gca().transData)
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 180) + plt.gca().transData)
plt.imshow(picture, transform=Affine2D().rotate_deg_around(*(0, 0), 270) + plt.gca().transData)