Spaces:
Sleeping
Sleeping
| import cv2 | |
| import numpy as np | |
| class EdgeDetector: | |
| def __init__(self, threshold1=50, threshold2=150): | |
| """ | |
| Initialize Edge Detector | |
| Args: | |
| threshold1: First threshold for Canny edge detection | |
| threshold2: Second threshold for Canny edge detection | |
| """ | |
| self.threshold1 = threshold1 | |
| self.threshold2 = threshold2 | |
| def detect_edges(self, image): | |
| """ | |
| Detect edges and highlight them in red on white background | |
| Args: | |
| image: Input image (RGB numpy array) | |
| Returns: | |
| edge_image: Image with red edges on white background | |
| edges: Binary edge mask | |
| """ | |
| # Convert to grayscale if needed | |
| if len(image.shape) == 3: | |
| gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) | |
| else: | |
| gray = image | |
| # Apply Gaussian blur to reduce noise | |
| blurred = cv2.GaussianBlur(gray, (5, 5), 0) | |
| # Canny edge detection | |
| edges = cv2.Canny(blurred, self.threshold1, self.threshold2) | |
| # Create white background with red edges | |
| edge_image = np.ones((edges.shape[0], edges.shape[1], 3), dtype=np.uint8) * 255 | |
| edge_image[edges != 0] = [255, 0, 0] # Red edges | |
| return edge_image, edges | |
| def adjust_thresholds(self, threshold1, threshold2): | |
| """ | |
| Adjust the edge detection thresholds | |
| """ | |
| self.threshold1 = threshold1 | |
| self.threshold2 = threshold2 | |
| print(f"Thresholds updated: threshold1={threshold1}, threshold2={threshold2}") | |