Spaces:
Sleeping
Sleeping
| import cv2 | |
| import numpy as np | |
| import gradio as gr | |
| # Generate a basic Normal map | |
| def generate_normal_map(image): | |
| # Convert Gradio image (RGB) to grayscale | |
| img = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) | |
| # Compute gradients using Sobel operators | |
| sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) | |
| sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) | |
| # Normalize gradients | |
| sobel_x = cv2.normalize(sobel_x, None, 0, 1, cv2.NORM_MINMAX) | |
| sobel_y = cv2.normalize(sobel_y, None, 0, 1, cv2.NORM_MINMAX) | |
| # Create RGB normal map | |
| height, width = img.shape | |
| normal_map = np.zeros((height, width, 3), dtype=np.uint8) | |
| normal_map[..., 0] = (sobel_x * 255).astype(np.uint8) # Red (X) | |
| normal_map[..., 1] = (sobel_y * 255).astype(np.uint8) # Green (Y) | |
| normal_map[..., 2] = 255 # Blue (Z) | |
| return normal_map | |
| # Set up Gradio interface | |
| interface = gr.Interface( | |
| fn=generate_normal_map, | |
| inputs=gr.Image(type="numpy", label="Upload Texture Image"), | |
| outputs=gr.Image(type="numpy", label="Generated Normal Map"), | |
| title="Material Map Generator", | |
| description="Upload an image to generate a Normal map." | |
| ) | |
| # Launch the app | |
| interface.launch() |