簡體   English   中英

根據兩個坐標旋轉圖像

[英]rotate an image based on the two coordinates

我有很多圖像包含兩個點,一個在頂部,另一個在底部。 以及我也將坐標存儲在 excel 文件中。 我想旋轉圖像,使其旋轉 90 度。下面是包含兩個坐標的圖像。 在此處輸入圖片說明

紅色表示使用坐標的實際圖像,角度為 85 度(大約),因此我想旋轉圖像並將其旋轉 90 度,如圖中黃色所示。

有人可以幫助我解決要使用的 api 或函數嗎? (我正在使用 Python 進行編碼) 在此處輸入圖片說明

這是三角形中的角度的基本數學。

如果你有兩個點(x1,y1) , (x2, y2)那么你可以計算dx = x2-x1 , dy = y2-y1然后你可以計算tangens_alpha = dy/dxalpha = arcus_tangens(tangens_alpha)然后你有angle ,你哈瓦用來計算旋轉- 90-alpha

在此處輸入圖片說明


在 Python 中,它將如下所示。 我從你的形象中獲得了分數。

因為圖像在左上角有(0,0) ,而不是像math那樣在左下角,所以我使用dy = -(y2 - y1)來翻轉它

import math

x1 = 295
y1 = 605

x2 = 330
y2 = 100

dx = x2 - x1
dy = -(y2 - y1)

alpha = math.degrees(math.atan2(dy, dx))
rotation = 90-alpha

print(alpha, rotation)

現在你可以使用PIL / pillowcv2 + imutils旋轉它

import math
import cv2
import imutils

x1 = 295
y1 = 605

x2 = 330
y2 = 100

dx = x2 - x1
dy = -(y2 - y1)

alpha = math.degrees(math.atan2(dy, dx))
rotation = 90-alpha
print(alpha, rotation)

img = cv2.imread('image.jpg')

img_2 = imutils.rotate(img, rotation) 
cv2.imwrite('rotate.jpg', img_2)

img_3 = imutils.rotate_bound(img, -rotation)
cv2.imwrite('rotate_bound.jpg', img_3)

cv2.imshow('rotate', img_2)
cv2.imshow('rotate_bound', img_3)

cv2.waitKey(0)

旋轉.jpg

在此處輸入圖片說明

旋轉邊界.jpg

在此處輸入圖片說明

暫無
暫無

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

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