mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-12-18 01:00:15 +00:00
Fix mypy
errors in erosion_operation.py
(#8603)
* updating DIRECTORY.md * Fix mypy errors in erosion_operation.py * Rename functions to use snake case * updating DIRECTORY.md * updating DIRECTORY.md * Replace raw file string with pathlib Path * Fix function name in erosion_operation.py doctest --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
This commit is contained in:
parent
84ec9414e4
commit
5830b29e7e
|
@ -1,34 +1,37 @@
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
|
|
||||||
def rgb2gray(rgb: np.array) -> np.array:
|
def rgb_to_gray(rgb: np.ndarray) -> np.ndarray:
|
||||||
"""
|
"""
|
||||||
Return gray image from rgb image
|
Return gray image from rgb image
|
||||||
>>> rgb2gray(np.array([[[127, 255, 0]]]))
|
|
||||||
|
>>> rgb_to_gray(np.array([[[127, 255, 0]]]))
|
||||||
array([[187.6453]])
|
array([[187.6453]])
|
||||||
>>> rgb2gray(np.array([[[0, 0, 0]]]))
|
>>> rgb_to_gray(np.array([[[0, 0, 0]]]))
|
||||||
array([[0.]])
|
array([[0.]])
|
||||||
>>> rgb2gray(np.array([[[2, 4, 1]]]))
|
>>> rgb_to_gray(np.array([[[2, 4, 1]]]))
|
||||||
array([[3.0598]])
|
array([[3.0598]])
|
||||||
>>> rgb2gray(np.array([[[26, 255, 14], [5, 147, 20], [1, 200, 0]]]))
|
>>> rgb_to_gray(np.array([[[26, 255, 14], [5, 147, 20], [1, 200, 0]]]))
|
||||||
array([[159.0524, 90.0635, 117.6989]])
|
array([[159.0524, 90.0635, 117.6989]])
|
||||||
"""
|
"""
|
||||||
r, g, b = rgb[:, :, 0], rgb[:, :, 1], rgb[:, :, 2]
|
r, g, b = rgb[:, :, 0], rgb[:, :, 1], rgb[:, :, 2]
|
||||||
return 0.2989 * r + 0.5870 * g + 0.1140 * b
|
return 0.2989 * r + 0.5870 * g + 0.1140 * b
|
||||||
|
|
||||||
|
|
||||||
def gray2binary(gray: np.array) -> np.array:
|
def gray_to_binary(gray: np.ndarray) -> np.ndarray:
|
||||||
"""
|
"""
|
||||||
Return binary image from gray image
|
Return binary image from gray image
|
||||||
|
|
||||||
>>> gray2binary(np.array([[127, 255, 0]]))
|
>>> gray_to_binary(np.array([[127, 255, 0]]))
|
||||||
array([[False, True, False]])
|
array([[False, True, False]])
|
||||||
>>> gray2binary(np.array([[0]]))
|
>>> gray_to_binary(np.array([[0]]))
|
||||||
array([[False]])
|
array([[False]])
|
||||||
>>> gray2binary(np.array([[26.2409, 4.9315, 1.4729]]))
|
>>> gray_to_binary(np.array([[26.2409, 4.9315, 1.4729]]))
|
||||||
array([[False, False, False]])
|
array([[False, False, False]])
|
||||||
>>> gray2binary(np.array([[26, 255, 14], [5, 147, 20], [1, 200, 0]]))
|
>>> gray_to_binary(np.array([[26, 255, 14], [5, 147, 20], [1, 200, 0]]))
|
||||||
array([[False, True, False],
|
array([[False, True, False],
|
||||||
[False, True, False],
|
[False, True, False],
|
||||||
[False, True, False]])
|
[False, True, False]])
|
||||||
|
@ -36,9 +39,10 @@ def gray2binary(gray: np.array) -> np.array:
|
||||||
return (gray > 127) & (gray <= 255)
|
return (gray > 127) & (gray <= 255)
|
||||||
|
|
||||||
|
|
||||||
def erosion(image: np.array, kernel: np.array) -> np.array:
|
def erosion(image: np.ndarray, kernel: np.ndarray) -> np.ndarray:
|
||||||
"""
|
"""
|
||||||
Return eroded image
|
Return eroded image
|
||||||
|
|
||||||
>>> erosion(np.array([[True, True, False]]), np.array([[0, 1, 0]]))
|
>>> erosion(np.array([[True, True, False]]), np.array([[0, 1, 0]]))
|
||||||
array([[False, False, False]])
|
array([[False, False, False]])
|
||||||
>>> erosion(np.array([[True, False, False]]), np.array([[1, 1, 0]]))
|
>>> erosion(np.array([[True, False, False]]), np.array([[1, 1, 0]]))
|
||||||
|
@ -62,14 +66,17 @@ def erosion(image: np.array, kernel: np.array) -> np.array:
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
# kernel to be applied
|
|
||||||
structuring_element = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]])
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# read original image
|
# read original image
|
||||||
image = np.array(Image.open(r"..\image_data\lena.jpg"))
|
lena_path = Path(__file__).resolve().parent / "image_data" / "lena.jpg"
|
||||||
|
lena = np.array(Image.open(lena_path))
|
||||||
|
|
||||||
|
# kernel to be applied
|
||||||
|
structuring_element = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]])
|
||||||
|
|
||||||
# Apply erosion operation to a binary image
|
# Apply erosion operation to a binary image
|
||||||
output = erosion(gray2binary(rgb2gray(image)), structuring_element)
|
output = erosion(gray_to_binary(rgb_to_gray(lena)), structuring_element)
|
||||||
|
|
||||||
# Save the output image
|
# Save the output image
|
||||||
pil_img = Image.fromarray(output).convert("RGB")
|
pil_img = Image.fromarray(output).convert("RGB")
|
||||||
pil_img.save("result_erosion.png")
|
pil_img.save("result_erosion.png")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user