问题描述
正如标题所述,我想在PIL中画一个圆,但输出不是一个圆
输出:https://i.stack.imgur.com/qlYmD.png
代码:
mask_im = Image.new("RGB",im2.size,(53,108,181))
draw = ImageDraw.Draw(mask_im)
x,y = mask_im.size
eX,eY = 517,191
bbox = (x/2 - eX/2,y/2 - eY/2,x/2 + eX/2,y/2 + eY/2)
draw.ellipse(bbox,fill = 'black',outline ='black')
mask_im.save('circle.png')
我想知道如何解决此问题。
解决方法
以50
为中心绘制半径为(150,150)
的圆:
mask_im = Image.new("RGB",(300,300),(53,108,181))
draw = ImageDraw.Draw(mask_im)
X,Y = 150,150
r = 50
draw.ellipse([(X-r,Y-r),(X+r,Y+r)],fill = 'black',outline ='black')
您必须向ellipse
提供
两点定义边界框。 [[x0,y0),(x1, y1)]或[x0,y0,x1,y1],其中x1> = x0且y1> = y0
因此,对于边界框的左下角,我们必须将r单位从X轴中心向后移,并将r单位从y轴中心向后移。同样,对于边界框的右上角,我们必须从X轴中心向前移动r个单位,从y轴中心向上方移动r个单位。