File size: 1,386 Bytes
7ce944b
f508a4a
172e9b7
 
 
f508a4a
 
 
2c288c9
dcc3c3a
2c288c9
 
dcc3c3a
 
2c288c9
dcc3c3a
 
2c288c9
 
 
 
 
 
 
 
 
dcc3c3a
 
 
c5a965f
 
f508a4a
f4d619e
e8d7c25
f4d619e
 
 
dcc3c3a
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
34
35
36
37
38
import os
os.system("pip install opencv-python")
os.system("pip install gradio --upgrade")

import gradio as gr
import cv2
import numpy as np

def image_to_silhouette_contours(image):
    try:
        print("Original image type:", type(image))
        print("Original image shape:", image.shape)
        # Convertir imagen a escala de grises
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        print("Gray image shape:", gray.shape)
        # Aplicar bordes
        edges = cv2.Canny(gray, 50, 150)
        print("Edges image shape:", edges.shape)
        # busca los contornos de los objetos en la imagen
        contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        # Crear una imagen negra para dibujar los contornos
        silhouette = np.zeros((image.shape[0], image.shape[1], 3), dtype=np.uint8)
        # Dibuja los contornos en la imagen negra
        cv2.drawContours(silhouette, contours, -1, (255, 255, 255), 1)
    
        print("Silhouette image shape:", silhouette.shape)
        return silhouette
    except Exception as e:
        print("An error occurred:", e)
        return "Error"

# Crear interfaz de usuario con Gradio
gr.Interface(
    image_to_silhouette, 
    gr.inputs.Image(type="filepath", label="Input"), 
    gr.outputs.Image(type="pil", label="Output"),
    css="Footer {visibility: hidden}"
    ).launch()