이미지를 기울여보기 위해 이미지를 약간 회전해야하는 응용 프로그램을 만들고 있습니다.이미지 회전을위한 파이썬 각도 계산
두 점 (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도 등으로 나오며, 각 방향으로 몇도 각도에 있어야합니다.
이 문제에 대한 해결책을 찾을 수 있도록 도와 주시면 이미지의 왜곡을 올바르게 교정 할 수 있습니다.