### Install pre-commit hooks Source: https://pypi.org/project/deskew Commands to install pre-commit hooks for development. ```bash pip install pre-commit pre-commit install --allow-missing-config ``` -------------------------------- ### Install deskew Source: https://pypi.org/project/deskew Commands to install or upgrade the deskew package using pip. ```bash python3 -m pip install deskew ``` ```bash python3 -m pip install -U deskew ``` -------------------------------- ### Use deskew CLI Source: https://pypi.org/project/deskew Command-line interface examples for detecting skew angle and deskewing an image. ```bash deskew input.png ``` ```bash deskew --output output.png input.png ``` -------------------------------- ### Deskew with scikit-image Source: https://pypi.org/project/deskew Example of using deskew with the scikit-image library to process and rotate an image. ```python import numpy as np from skimage import io from skimage.color import rgb2gray from skimage.transform import rotate from deskew import determine_skew image = io.imread('input.png') grayscale = rgb2gray(image) angle = determine_skew(grayscale) rotated = rotate(image, angle, resize=True) * 255 io.imsave('output.png', rotated.astype(np.uint8)) ``` -------------------------------- ### Deskew with OpenCV Source: https://pypi.org/project/deskew Example of using deskew with OpenCV, including a custom rotation function to handle image dimensions. ```python import math from typing import Tuple, Union import cv2 import numpy as np from deskew import determine_skew def rotate( image: np.ndarray, angle: float, background: Union[int, Tuple[int, int, int]] ) -> np.ndarray: old_width, old_height = image.shape[:2] angle_radian = math.radians(angle) width = abs(np.sin(angle_radian) * old_height) + abs(np.cos(angle_radian) * old_width) height = abs(np.sin(angle_radian) * old_width) + abs(np.cos(angle_radian) * old_height) image_center = tuple(np.array(image.shape[1::-1]) / 2) rot_mat = cv2.getRotationMatrix2D(image_center, angle, 1.0) rot_mat[1, 2] += (width - old_width) / 2 rot_mat[0, 2] += (height - old_height) / 2 return cv2.warpAffine(image, rot_mat, (int(round(height)), int(round(width))), borderValue=background) image = cv2.imread('input.png') grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) angle = determine_skew(grayscale) rotated = rotate(image, angle, (0, 0, 0)) cv2.imwrite('output.png', rotated) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.