def p2abs(point):
    return math.sqrt(point[0] ** 2 + point[1] ** 2)

def rotatePoint(point, angle):
    s, c = math.sin(angle), math.cos(angle)
return p[0] * c - p[1] * s, p[0] * s + p[1] * c

def rotatePoints(points, angle):
    return [rotatePoint(point, angle) for point in points]
points = map(lambda x: tuple(x[0]), contour)
convexHull = map(lambda x: points[x], scipy.spatial.ConvexHull(numpy.array(
    points)).vertices)
Нахождение повернутого прямоугольника по контуру