diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 04:37:25 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 04:37:25 +0000 |
| commit | a8f9df126ec6b62b968fd39dbc8fe9eb05e1263d (patch) | |
| tree | 940eec656d3f679cf7de2418afddbd851e796962 | |
| parent | 4a01b231847c229f830d3836cb5d9f8bac595642 (diff) | |
automatic import of python-deskewopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-deskew.spec | 388 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 390 insertions, 0 deletions
@@ -0,0 +1 @@ +/deskew-1.4.3.tar.gz diff --git a/python-deskew.spec b/python-deskew.spec new file mode 100644 index 0000000..91a2a43 --- /dev/null +++ b/python-deskew.spec @@ -0,0 +1,388 @@ +%global _empty_manifest_terminate_build 0 +Name: python-deskew +Version: 1.4.3 +Release: 1 +Summary: Skew detection and correction in images containing text +License: MIT +URL: https://github.com/sbrunner/deskew +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/0c/53/e6e83055477254cc23b928f155445deb582434d4477f22769c068e21228f/deskew-1.4.3.tar.gz +BuildArch: noarch + +Requires: python3-matplotlib +Requires: python3-numpy +Requires: python3-opencv-python-headless +Requires: python3-scikit-image + +%description +# Deskew + +Note: Skew is measured in degrees. Deskewing is a process whereby skew is removed by rotating an image by the same amount as its skew but in the opposite direction. This results in a horizontally and vertically aligned image where the text runs across the page rather than at an angle. + +The return angle is between -45 and 45 degrees to don't arbitrary change the image orientation. + +By using the library you can set the argument `angle_pm_90` to `True` to have an angle between -90 and 90 degrees. + +## Skew detection and correction in images containing text + +| Image with skew | Image after deskew | +| ---------------------------------------------------- | ------------------------------------------------------------------ | +|  |  | + +## Cli usage + +Get the skew angle: + +```bash +deskew input.png +``` + +Deskew an image: + +```bash +deskew --output output.png input.png +``` + +## Lib usage + +With scikit-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)) +``` + +With OpenCV: + +```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) +``` + +## Debug images + +If you get wrong skew angle you can generate debug images, that can help you to tune the skewing detection. + +If you install deskew with `pip install deskew[debug_images]` you can get some debug images used for +the skew detection with the function `determine_skew_debug_images`. + +To start the investigation you should first increase the `num_peaks` (default `20`) and use +the `determine_skew_debug_images` function. + +Then you can try to tune the following arguments `num_peaks`, `angle_pm_90`, `min_angle`, `max_angle`, +`min_deviation` and eventually `sigma`. + +Inspired by Alyn: https://github.com/kakul/Alyn + +## Contributing + +Install the pre-commit hooks: + +```bash +pip install pre-commit +pre-commit install --allow-missing-config +``` + + + +%package -n python3-deskew +Summary: Skew detection and correction in images containing text +Provides: python-deskew +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-deskew +# Deskew + +Note: Skew is measured in degrees. Deskewing is a process whereby skew is removed by rotating an image by the same amount as its skew but in the opposite direction. This results in a horizontally and vertically aligned image where the text runs across the page rather than at an angle. + +The return angle is between -45 and 45 degrees to don't arbitrary change the image orientation. + +By using the library you can set the argument `angle_pm_90` to `True` to have an angle between -90 and 90 degrees. + +## Skew detection and correction in images containing text + +| Image with skew | Image after deskew | +| ---------------------------------------------------- | ------------------------------------------------------------------ | +|  |  | + +## Cli usage + +Get the skew angle: + +```bash +deskew input.png +``` + +Deskew an image: + +```bash +deskew --output output.png input.png +``` + +## Lib usage + +With scikit-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)) +``` + +With OpenCV: + +```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) +``` + +## Debug images + +If you get wrong skew angle you can generate debug images, that can help you to tune the skewing detection. + +If you install deskew with `pip install deskew[debug_images]` you can get some debug images used for +the skew detection with the function `determine_skew_debug_images`. + +To start the investigation you should first increase the `num_peaks` (default `20`) and use +the `determine_skew_debug_images` function. + +Then you can try to tune the following arguments `num_peaks`, `angle_pm_90`, `min_angle`, `max_angle`, +`min_deviation` and eventually `sigma`. + +Inspired by Alyn: https://github.com/kakul/Alyn + +## Contributing + +Install the pre-commit hooks: + +```bash +pip install pre-commit +pre-commit install --allow-missing-config +``` + + + +%package help +Summary: Development documents and examples for deskew +Provides: python3-deskew-doc +%description help +# Deskew + +Note: Skew is measured in degrees. Deskewing is a process whereby skew is removed by rotating an image by the same amount as its skew but in the opposite direction. This results in a horizontally and vertically aligned image where the text runs across the page rather than at an angle. + +The return angle is between -45 and 45 degrees to don't arbitrary change the image orientation. + +By using the library you can set the argument `angle_pm_90` to `True` to have an angle between -90 and 90 degrees. + +## Skew detection and correction in images containing text + +| Image with skew | Image after deskew | +| ---------------------------------------------------- | ------------------------------------------------------------------ | +|  |  | + +## Cli usage + +Get the skew angle: + +```bash +deskew input.png +``` + +Deskew an image: + +```bash +deskew --output output.png input.png +``` + +## Lib usage + +With scikit-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)) +``` + +With OpenCV: + +```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) +``` + +## Debug images + +If you get wrong skew angle you can generate debug images, that can help you to tune the skewing detection. + +If you install deskew with `pip install deskew[debug_images]` you can get some debug images used for +the skew detection with the function `determine_skew_debug_images`. + +To start the investigation you should first increase the `num_peaks` (default `20`) and use +the `determine_skew_debug_images` function. + +Then you can try to tune the following arguments `num_peaks`, `angle_pm_90`, `min_angle`, `max_angle`, +`min_deviation` and eventually `sigma`. + +Inspired by Alyn: https://github.com/kakul/Alyn + +## Contributing + +Install the pre-commit hooks: + +```bash +pip install pre-commit +pre-commit install --allow-missing-config +``` + + + +%prep +%autosetup -n deskew-1.4.3 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-deskew -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.4.3-1 +- Package Spec generated @@ -0,0 +1 @@ +75739e9c7d3cd4c259984de7ef3803a2 deskew-1.4.3.tar.gz |
