Spaces:
Build error
Build error
| import cv2 | |
| import os | |
| def classic_sketch(gray): | |
| inverted = 255 - gray | |
| blurred = cv2.GaussianBlur(inverted, (21, 21), 0) | |
| inverted_blur = 255 - blurred | |
| return cv2.divide(gray, inverted_blur, scale=256.0) | |
| def light_sketch(gray): | |
| inverted = 255 - gray | |
| blurred = cv2.GaussianBlur(inverted, (31, 31), 0) | |
| inverted_blur = 255 - blurred | |
| return cv2.divide(gray, inverted_blur, scale=256.0) | |
| def dark_sketch(gray): | |
| inverted = 255 - gray | |
| blurred = cv2.GaussianBlur(inverted, (11, 11), 0) | |
| inverted_blur = 255 - blurred | |
| return cv2.divide(gray, inverted_blur, scale=256.0) | |
| def edge_sketch(gray): | |
| return cv2.Canny(gray, 50, 150) | |
| def generate_all_sketches(input_path, output_folder, unique_id): | |
| # Verify input exists | |
| if not os.path.exists(input_path): | |
| raise FileNotFoundError(f"Input image not found at {input_path}") | |
| image = cv2.imread(input_path) | |
| if image is None: | |
| raise ValueError("Failed to read image (might be corrupted or wrong format)") | |
| # Process image | |
| image = cv2.resize(image, (600, 600), interpolation=cv2.INTER_AREA) | |
| gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
| sketches = { | |
| 'classic': classic_sketch(gray), | |
| 'light': light_sketch(gray), | |
| 'dark': dark_sketch(gray), | |
| 'edge': edge_sketch(gray) | |
| } | |
| # Ensure output directory exists | |
| os.makedirs(output_folder, exist_ok=True) | |
| # Save all sketches | |
| output_files = {} | |
| for name, img in sketches.items(): | |
| output_path = os.path.join(output_folder, f"{unique_id}_{name}.jpg") | |
| cv2.imwrite(output_path, img) | |
| output_files[name] = output_path | |
| return output_files |