我试图在图像绘制中绘制一个倾斜的椭圆。但是,我不确定如何定义它,因为虽然下面的方案会移动点,但我认为这只会压扁椭圆,而不是旋转它(我认为在任何情况下转换都有一些错误)。我将此函数的输出提供给ellipse命令并将其添加到现有图片中,因此任何旋转整个图像的方法都不好。 OD只是我正在使用的坐标中心的一个方形偏移。
def ellipsebound(major, minor, tilt=0, offset=0, angle=0):
#creates a bound for an ellispe, defined with tilt meaning to rotate the orthogonal axis and angle corresponds to rotating the ellipse position
angle = radians(angle)
tilt = radians(tilt)
box=(
1 + int(ceil((OD+offset*cos(angle)+(major*cos(tilt)+minor*sin(tilt)))/conv)),
1 + int(ceil((OD+offset*sin(angle)+(major*sin(tilt)-minor*cos(tilt)))/conv)),
int(ceil((2*OD-(OD-offset*cos(angle)-(major*cos(tilt)+minor*sin(tilt)))/conv))),
int(ceil((2*OD-(OD-offset*sin(angle)-(major*sin(tilt)-minor*cos(tilt)))/conv)))
) #create bounding box
return box
有谁知道如何做到这一点?
答案 0 :(得分:2)
看起来像'框'用于绘制椭圆的那个没有与之相关的旋转。它只是由(左,上,右,下)范围定义。
一种可能的解决方法(取决于您需要做什么)是将椭圆(正确大小但没有旋转)绘制到中间图像上,使用image.rotate()
方法,然后将其粘贴到目标中图像。
我希望有所帮助。