Spaces:
Paused
Paused
Download src/operations.py from ahmedsharaf/ClothSeg: direct link, hf CLI and curl.
- Browser
- Download file 1.39 kB
-
https://huggingface.co/spaces/ahmedsharaf/ClothSeg/resolve/main/src/operations.py
- Command line
-
hf download hf://spaces/ahmedsharaf/ClothSeg/src/operations.py
-
curl -L -o operations.py https://huggingface.co/spaces/ahmedsharaf/ClothSeg/resolve/main/src/operations.py
1.39 kB
| import cv2 | |
| import numpy as np | |
| # Convert Original Mask into Custom Mask Contain only clothes mask | |
| def remap_mask(mask, label_map): | |
| new_mask = np.zeros_like(mask, dtype=np.uint8) | |
| for old_id, new_id in label_map.items(): | |
| new_mask[mask == old_id] = new_id # convert non-clothes to background | |
| return new_mask | |
| # Convert mask to background -> 0 / clothes -> 1 | |
| def to_binary_clothes(mask): | |
| return (mask > 0).astype(np.uint8) | |
| # Add Morphological operations to remove noise and fill gab inside clothes | |
| def morphological_operations(mask, opening_kernel = 3, closing_kernel = 11, opening_iterations=1, closing_iterations=1): | |
| mask = mask.astype(np.uint8) | |
| # Opening -> Remove Small Noise | |
| open_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (opening_kernel, opening_kernel)) | |
| mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, open_kernel, iterations=opening_iterations) | |
| # CLosing -> fill gaps | |
| close_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (closing_kernel, closing_kernel)) | |
| mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, close_kernel, iterations=closing_iterations) | |
| return mask | |
| # create overlay | |
| def create_overlay(image, mask, alpha=0.5): | |
| overlay = image.copy() | |
| clothes = mask == 1 | |
| overlay[clothes] = (overlay[clothes] * (1 - alpha) + np.array([0, 255, 0]) * alpha).astype(np.uint8) | |
| return overlay |