Introduction
Morphological operations help clean and change shapes in images by adding or removing pixels. They make it easier to find important parts or fix small mistakes in pictures.
Jump into concepts and practice - no test required
cv2.erode(image, kernel, iterations=1) cv2.dilate(image, kernel, iterations=1) cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
kernel = np.ones((3,3), np.uint8) eroded = cv2.erode(image, kernel, iterations=1)
kernel = np.ones((5,5), np.uint8) dilated = cv2.dilate(image, kernel, iterations=2)
kernel = np.ones((3,3), np.uint8) opened = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
kernel = np.ones((3,3), np.uint8) closed = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
import cv2 import numpy as np # Create a simple binary image with noise image = np.zeros((7,7), dtype=np.uint8) image[2:5, 2:5] = 255 # a white square image[1,1] = 255 # noise pixel kernel = np.ones((3,3), np.uint8) # Apply erosion eroded = cv2.erode(image, kernel, iterations=1) # Apply dilation dilated = cv2.dilate(image, kernel, iterations=1) # Apply opening (remove noise) opened = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) # Apply closing (fill holes) closed = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel) print("Original image:\n", image) print("Eroded image:\n", eroded) print("Dilated image:\n", dilated) print("Opened image:\n", opened) print("Closed image:\n", closed)
erosion operation do to the white parts of a binary image?img with a 3x3 kernel?import cv2
import numpy as np
img = np.array([[0,0,0,0,0],
[0,255,255,255,0],
[0,255,0,255,0],
[0,255,255,255,0],
[0,0,0,0,0]], dtype=np.uint8)
kernel = np.ones((3,3), np.uint8)
eroded = cv2.erode(img, kernel)
print(eroded)img but it does not remove noise as expected:kernel = np.ones((3,3), np.uint8) opened = cv2.dilate(cv2.erode(img, kernel), kernel)