Untitled
unknown
plain_text
a year ago
1.3 kB
4
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