Spaces:
Sleeping
Sleeping
File size: 1,194 Bytes
05ae948 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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() |