如何旋转矩形 cv2 python

how to rotate Rectangle shape cv2 python

我有一个简单的矩形我只想以任何输入角度旋转这个矩形 我的代码是:

import cv2
import numpy as np


imgc = np.zeros((500, 500, 3), np.uint8)


p0 = (100, 100)
p1 = (100 , 150)
p2 = (150, 150)
p3 = (150, 100)

pp = np.array([p0, p1, p2, p3])
cv2.drawContours(imgc, [pp], 0, (155, 155, 155), -1, cv2.LINE_AA)

cv2.imshow("image",imgc)

cv2.waitKey()

你需要的是Rotation Matrices。但是你需要记住这个围绕原点旋转一个给定角度(以弧度为单位)的点。

您需要将您的点移动到原点,旋转它们并向后移动相同的量。

当您将所有点生成步骤分解为一个等式时,这里看起来是线:

def rotate(points, angle):
    ANGLE = np.deg2rad(angle)
    c_x, c_y = np.mean(points, axis=0)
    return np.array(
        [
            [
                c_x + np.cos(ANGLE) * (px - c_x) - np.sin(ANGLE) * (py - c_x),
                c_y + np.sin(ANGLE) * (px - c_y) + np.cos(ANGLE) * (py - c_y)
            ]
            for px, py in points
        ]
    ).astype(int)

请注意:drawContours 期望点为整数而不是浮点数,因此您需要将数组转换为 int

这里蓝色矩形是原始矩形,洋红色矩形是旋转 45 度后的矩形: