Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于两个坐标旋转图像_Python_Image_Rotation - Fatal编程技术网

Python 基于两个坐标旋转图像

Python 基于两个坐标旋转图像,python,image,rotation,Python,Image,Rotation,我有很多图像,其中包含两个点,一个在顶部,另一个在底部。还有,我的坐标也存储在excel文件中。我想旋转图像,使其为90度。下面是包含两个坐标的图像。 红色 颜色表示使用坐标的实际图像,角度为85度(约),因此我想旋转图像并使其旋转90度,如图中黄色所示 有人能帮我用这个api或函数吗。(我正在使用Python进行编码) 这是三角形中角度的基本数学 如果你有两个点,(x1,y1),(x2,y2),那么你可以计算dx=x2-x1,dy=y2-y1,然后你可以计算tangens\u alpha=d

我有很多图像,其中包含两个点,一个在顶部,另一个在底部。还有,我的坐标也存储在excel文件中。我想旋转图像,使其为90度。下面是包含两个坐标的图像。

红色 颜色表示使用坐标的实际图像,角度为85度(约),因此我想旋转图像并使其旋转90度,如图中黄色所示

有人能帮我用这个api或函数吗。(我正在使用Python进行编码)
这是三角形中角度的基本数学

如果你有两个点,
(x1,y1)
(x2,y2)
,那么你可以计算
dx=x2-x1
dy=y2-y1
,然后你可以计算
tangens\u alpha=dy/dx
alpha=arcus\u tangens(tangens\u alpha)
并且你有
角度
可以用来计算旋转-
90 alpha


在Python中,它将如下所示。我从你的图像中提取了一些要点

因为图像在左上角有
(0,0)
,而不是像在
数学中那样在左下角,所以我使用
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
/
枕头
cv2
+
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)

rotate.jpg

rotate_bound.jpg


这是三角形中角度的基本数学

如果你有两个点,
(x1,y1)
(x2,y2)
,那么你可以计算
dx=x2-x1
dy=y2-y1
,然后你可以计算
tangens\u alpha=dy/dx
alpha=arcus\u tangens(tangens\u alpha)
并且你有
角度
可以用来计算旋转-
90 alpha


在Python中,它将如下所示。我从你的图像中提取了一些要点

因为图像在左上角有
(0,0)
,而不是像在
数学中那样在左下角,所以我使用
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
/
枕头
cv2
+
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)

rotate.jpg

rotate_bound.jpg


如果你有两个点,那么你可以计算距离
dx
dy
,你可以用它来计算(我记得)
tan(alpha)=dy/dx
,然后你可以计算
alpha=atan(dy/dx)
。您可以使用标准模块
math
计算
alpha
。当你有
alpha
时,你可以使用或旋转它。@furas你能用一个例子解释我吗?只是好奇@krupalimitry这是什么图像?@Ajinkya这是一个蟹状图像如果你有两个点,你可以计算距离
dx
dy
,你可以用它来计算(我记得)
tan(alpha)=dy/dx
然后您可以计算
alpha=atan(dy/dx)
。您可以使用标准模块
math
计算
alpha
。当你有
alpha
时,你可以使用或旋转它。@furas你能用一个例子解释我吗?只是好奇@krupalimitry这是什么图像?@Ajinkya这是一个螃蟹图像