0
我正在研究一個應用程序,它首先需要稍微旋轉圖像以便對其進行歪斜。用於圖像旋轉的Python角度計算
我已經檢測到兩點(x1,y1)和(x2,y2)之間的圖像垂直線。垂直線不完全是垂直的 - 第二個x座標稍微小於或略大於頂部x,因此該線具有斜率。
我想計算線的斜率的角度,以便我可以旋轉圖像,然後重新檢測線,以便它完全垂直。我在Python中使用OpenCV。
不幸的是,我在計算線的斜率方面存在問題,因此圖像的旋轉不準確。
我的函數來檢測圖像中的垂直線的斜率爲:
def find_vert_angles(vertical_line_candidates, vertical_line_candidates2, roi_x_coordinates, roi_x_coordinates2):
line_angles_radians = []
for line_x, line_x2 in itertools.izip(vertical_line_candidates, vertical_line_candidates2):
x_diff = line_x2 - line_x
y_diff = roi_x_coordinates[1][1] - roi_x_coordinates[0][1]
if x_diff != 0:
slope = y_diff/x_diff
angle_in_radians = atan(slope)
line_angles_radians.append(angle_in_radians)
else:
line_angles_radians.append(0)
return line_angles_radians
我的代碼來旋轉圖像,使得線可以是垂直如下:
skew_angle = degrees(vert_angle[1])
print "Detected skew angle is " + str(skew_angle) + " degrees"
warp = cv2.getRotationMatrix2D((img_width/2,img_height/2),skew_angle,1)
image = cv2.warpAffine(image,warp,(img_width,img_height))
但是旋轉角度出現在249度,89度等時,它們應該在每個方向上只有幾度。
如果任何人都可以幫我找到解決這個問題的方法,這樣我就可以正確糾正圖像的偏斜,這將非常感激。