簡體   English   中英

openCV 中邊界框的旋轉

[英]Rotation of bounding box in openCV

我對使用 openCV 很陌生,這可能是一個愚蠢的問題。 在此處輸入圖像描述

我將參考上圖進行討論。 所以我的問題陳述是在所有文本元素周圍繪制邊界框。 我可以方便地從圖像的 json 文件中獲取該信息。 所以我可以從 json 得到 x、y、w 和 h 並使用cv2.rectangle(img1, (x, y), (x + w, y + h), (255, 255, 255), 2)

問題出在 json 文件中,對於旋轉的文本,它只提供旋轉角度而不是旋轉矩形的坐標。 例如,從上圖中,對於“yourwebsite.com”,給出了 x、y、w 和 h,旋轉為 -90 度。 我做了一些基本的 w, h = h, w 來獲得邊界框。 但是當度數像 60 ro 80 時我該怎么辦。有沒有 function 或方法來獲取旋轉邊界框的坐標?

例子: 在此處輸入圖像描述

在這種情況下,flash 銷售傾斜 -22 度。 但是 x、y、w 和 h 是為頂部的白色矩形提供的,沒有覆蓋任何東西。 它需要傾斜一個特定的角度,如 json 文件中所述,才能在 FLASH 銷售區域上方。 x 和 y 始終代表邊界框的左上角。

先感謝您!

我認為您的問題是“當您只有框的左上角及其尺寸和旋轉角度時如何繪制旋轉的邊界框”。 如果這是正確的,那么您可以通過 Python/OpenCV 或使用下圖和數學的任何其他工具從旋轉邊界框的幾何和三角函數中執行此操作。

在此處輸入圖像描述

假設我們知道 (X1,Y1)、寬度 W、高度 H 和旋轉角度 theta。 在這里,我們使用如圖所示的逆時針正旋轉的約定。 使用頂部對着的直角,我們可以計算 (X2,Y2) 為

X2 = x1 + W*cos(theta)
Y2 = Y1 - W*sin(theta)

我們可以從左側的直角三角形得到 (X4,Y4):

X4 = X1 + H*sin(theta)
Y4 = Y1 + H*cos(theta)

最后我們可以使用 (X4,Y4) 和右下三角形得到 (X3,Y3):

X3 = X4 + W*cos(theta)
Y3 = Y4 - W*sin(theta)

暫無
暫無

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

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