如何通过迭代旋转图像的一部分

问题描述 投票:0回答:1

目标

我正在尝试旋转图像的遮罩部分。例如,如果我有一个内半径为 30、外半径为 50 的圆形蒙版,那么我的目标是将蒙版图像旋转一定角度,然后将其添加到原始图像中。但我想用一个圆形蒙版来做到这一点,该蒙版在改变旋转程度的同时不断减小。想象一下,我想要扭曲图像的中心,那么我所要做的就是旋转图像的圆形部分,并随着半径的减小而增加旋转程度。

我的代码

from PIL import Image, ImageDraw, ImageFilter
import numpy
im1 = Image.open('lena.jpg')
im2 = Image.open('lena.jpg').resize(im1.size)
# Giving The Original image Directory 
# Specified 
Original_Image = Image.open('lena.jpg') 


# This Will Rotate Image By 60 Degree 


for i in numpy.arange(0,10,0.5):
    mask = Image.new("L", im1.size, 0)
    draw = ImageDraw.Draw(mask)
    rotated_image3 = Original_Image.rotate(18*i) 
    draw.ellipse((144+i-5, 54+i-5, 256-i+5, 166-i+5), fill=255)
    draw.ellipse((140+i, 50+i, 260-i, 170-i), fill=0)

    im = Image.composite(rotated_image3, im2, mask)
im.show()

这是原图

如何将所有旋转图像添加到一张图像中?当我运行代码时,它只显示图像中的一个旋转区域。如何显示一张图像,其中 for 循环选择的所有区域都出现旋转,而不仅仅是一个旋转区域?我知道我的代码有问题,但我不知道如何实现我的目标。

python-3.x opencv image-processing python-imaging-library
1个回答
0
投票

我找到方法了

from PIL import Image, ImageDraw, ImageFilter
import numpy
im1 = Image.open('gala.png')

# Giving The Original image Directory 
# Specified 
Original_Image = Image.open('gala.png') 


# This Will Rotate Image By 60 Degree 


for i in numpy.arange(0,90,1):
im2=Image.open(f'/Users/beadpile/Desktop/galaxy/gala{i}.png').resize(im1.size)
    mask = Image.new("L", im1.size, 0)
    draw = ImageDraw.Draw(mask)
    rotated_image3 = Original_Image.rotate(i*8) 
    draw.ellipse((144+i-5, 54+i-5, 256-i+5, 166-i+5), fill=255)
    draw.ellipse((140+i, 50+i, 260-i, 170-i), fill=0)
    im = Image.composite(rotated_image3, im2, mask)
    im.save(f'/Users/beadpile/Desktop/galaxy/gala{i+1}.png')
im.show()
© www.soinside.com 2019 - 2024. All rights reserved.