Spaces:
Runtime error
Runtime error
File size: 4,292 Bytes
c11624a ed771e1 |
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
import os
import time
import pathlib
from PIL import Image
#import envCharger
def mass(input1, input2):
# envCharger.load_env("local")
# PLATAFORMA = os.getenv('plataforma')
# print("PLATAFORMA: ", PLATAFORMA)
#video o cualquier otro ser铆a para imagenes.
modo = "pic"
#local o huggingface
plataforma = "huggingface"
#face_swapper o face_enhancer o la combinaci贸n de ellos.
procesador = "face_swapper"
print(f"Inicio: Estamos en modo {modo}, plataforma: {plataforma} y procesador: {procesador}.")
path_video = input2
print("Path_video es:", path_video)
if modo == "video":
if plataforma == "local":
#Para local.
path_parts = path_video.split("\\")
else:
#Para HuggingFace
#Creo que no va en imagen.
print("La plataforma en la que basaremos la divisi贸n es HuggingFace.")
path_parts = path_video.split("/")
#Aqu铆 obtendremos nom_video
#Creo no va en imagen
filename = path_parts[-1]
nom_video = filename[:-4]
print("Esto es filename alias nom_video: ", nom_video)
path_particular = "/".join(path_parts[0:len(path_parts) - 1])
path_general = "/".join(path_parts[0:len(path_parts) - 2])
path_general = path_general.replace("\\", "/")
path_particular = path_particular.replace("\\", "/")
print("Path general: ", path_general)
print("Path general: ", path_particular)
path = pathlib.Path("result.mp4")
files = os.listdir(path_general)
print("Estos son los files que hay:")
print(files)
ext_imagen = "png"
ext_video = "mp4"
#Selector de modo.
if modo == "video":
print("Se asign贸 la extensi贸n de video:", ext_video)
extension = ext_video
else:
print("Se asign贸 la extensi贸n de imagen:", ext_imagen)
extension = ext_imagen
#El source siempre es una imagen.
source_path = "source.png"
target_path = "target." + extension
result_path = "result." + extension
#La primera siempre ser谩 una imagen, por eso no entra en el modo selector.
source_image = Image.fromarray(input1)
print("Esto es source_image: ", source_image)
source_image.save(source_path)
#Aqu铆 trabajaremos solo el target.
if modo == "video":
#Para Video
target_path = input2
else:
#Es decir si es modo imagen
#Para Imagenes
target_image = Image.fromarray(input2)
print("Esto es target_image: ", target_image)
target_image.save(target_path)
print("Despu茅s de los selectores de modo los paths quedaron as铆:")
print("source_path: ", source_path)
print("target_path: ", target_path)
#FUTURE: Agrega por par谩metro o mejor a煤n por enviroment el hecho de si es compu para usar cpu o si es hf para usar cuda o azure?
#(choose from 'tensorrt', 'cuda', 'cpu')
command = f"python run.py -s {source_path} -t {target_path} -o {result_path} --frame-processor {procesador} --execution-provider cpu"
print(command)
proc = os.popen(command)
output = proc.read()
print("Output (resultado de la ejecuci贸n del c贸digo):")
print(output)
print("Termin贸 la impresi贸n del output...")
if "No face in source path detected" in output:
#Si no se detecta un rostro, pondremos un placeholder, 茅sto evita que se despliegue el 煤ltimo result obtenido antes...
#...de la operaci贸n fallida.
print("No se detect贸 ninguna cara en la ruta de origen.")
result_path = "no-source-face.png"
else:
print("Si se detecto un rostro...")
#Si s铆 se detect贸 un rostro, sigue su camino normal.
print("脡ste es el momento en el que se creo result, revisar...")
path = pathlib.Path(result_path)
path_abs = os.path.abspath(path)
print("脡ste es el path:", path)
print("Y su ruta absoluta es: ", path_abs)
print("Listo! Gracias!")
return path
|