Untitled
Anonymous
plain_text
01/22/2024 12:59 PM
1.7 KB
17
Indexable
def correct_skew(image):
# Преобразование в оттенки серого
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Обнаружение границ с помощью адаптивного метода
edges = cv2.Canny(gray, 100, 200, apertureSize=3)
# Использование преобразования Хафа для обнаружения линий
lines = cv2.HoughLines(edges, 1, np.pi/180, 150)
if lines is not None:
angles = []
for rho, theta in lines[:, 0]:
angle = np.degrees(theta) - 90
if angle < -45:
angle = 90 + angle
if -45 <= angle <= 45:
angles.append(angle)
# Усреднение углов
if len(angles) > 0:
median_angle = np.median(angles)
# Поворот изображения для коррекции наклона
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, median_angle, 1.0)
corrected_img = cv2.warpAffine(image, M, (w, h),
flags=cv2.INTER_CUBIC,
borderMode=cv2.BORDER_REPLICATE)
return corrected_img
return image
Editor is loading...
Leave a Comment