簡體   English   中英

如何旋轉矩形形狀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()

你需要的是旋轉矩陣 但是你需要記住這個以給定角度(以弧度為單位)圍繞原點旋轉的點。

您需要將您的點移動到原點旋轉它們並將它們移回相同的量。

當您將所有點生成步驟分解為一個等式時,會出現以下情況:

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 度的矩形:

輪換結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM