32 lines
886 B
Python
32 lines
886 B
Python
import numpy as np
|
|
import cv2
|
|
|
|
# Load image
|
|
original_img = cv2.imread("../../data/headphones.jpg")
|
|
original_img = cv2.resize(original_img, (int(original_img.shape[1]/ 2), int(original_img.shape[0] / 2)))
|
|
|
|
img = cv2.cvtColor(original_img, cv2.COLOR_BGR2GRAY)
|
|
cv2.imshow("original_img", original_img)
|
|
|
|
# Binary image
|
|
threshold = 80
|
|
binary_mask = np.copy(img)
|
|
binary_mask[img < threshold] = 1
|
|
binary_mask[img >= threshold] = 0
|
|
cv2.imshow("binary_mask", binary_mask.astype(np.float32))
|
|
|
|
# Morphing
|
|
kernel = np.ones((9, 9))
|
|
eroded_mask = cv2.erode(binary_mask, kernel, iterations=1)
|
|
cv2.imshow("eroded_mask", eroded_mask.astype(np.float32))
|
|
|
|
# Subtraction
|
|
edges = binary_mask - eroded_mask
|
|
cv2.imshow("edges", edges.astype(np.float32))
|
|
|
|
# Modify original image
|
|
original_img[:, :, 2] = np.maximum(original_img[:, :, 2], edges * 255)
|
|
cv2.imshow("modified_image", original_img)
|
|
|
|
cv2.waitKey(0)
|