|
import streamlit as st |
|
import os.path |
|
|
|
os.system("mkdir _input") |
|
os.system("mkdir _output") |
|
os.system("mkdir _outputf") |
|
os.system("ls") |
|
if not os.path.isfile("./_input/imagem-0001.png"): |
|
os.system("ffmpeg -i vivi.mp4 -compression_level 10 -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int -s 1080x1920 -r 0.12 ./_input/imagem-%4d.png") |
|
|
|
os.system("ls ./_input") |
|
if 'myVar' not in globals(): |
|
myVar="" |
|
os.system("pip install git+https://github.com/TencentARC/GFPGAN.git") |
|
|
|
import cv2 |
|
import glob |
|
import numpy as np |
|
from basicsr.utils import imwrite |
|
from gfpgan import GFPGANer |
|
|
|
|
|
import random |
|
|
|
from PIL import Image |
|
import torch |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bg_upsampler = None |
|
print(f"Is CUDA available: {torch.cuda.is_available()}") |
|
if 'restorer' not in globals(): |
|
restorer = GFPGANer( |
|
model_path='GFPGANv1.3.pth', |
|
upscale=2, |
|
arch='clean', |
|
channel_multiplier=2, |
|
bg_upsampler=bg_upsampler) |
|
|
|
|
|
img_list = sorted(glob.glob(os.path.join("./_input", '*'))) |
|
|
|
for img_path in img_list: |
|
|
|
img_name = os.path.basename(img_path) |
|
print(f'Processing {img_name} ...') |
|
basename, ext = os.path.splitext(img_name) |
|
input_img = cv2.imread(img_path, cv2.IMREAD_COLOR) |
|
|
|
|
|
cropped_faces, restored_faces, restored_img = restorer.enhance( |
|
input_img, |
|
has_aligned='store_true', |
|
only_center_face='store_true', |
|
paste_back=True, |
|
weight=0.5) |
|
|
|
|
|
for idx, (cropped_face, restored_face) in enumerate(zip(cropped_faces, restored_faces)): |
|
|
|
save_crop_path = os.path.join("_output", 'cropped_faces', f'{basename}_{idx:02d}.png') |
|
imwrite(cropped_face, save_crop_path) |
|
|
|
if None is not None: |
|
save_face_name = f'{basename}_{idx:04d}_{args.suffix}.png' |
|
else: |
|
save_face_name = f'{basename}_{idx:04d}.png' |
|
save_restore_path = os.path.join("_output", 'restored_faces', save_face_name) |
|
imwrite(restored_face, save_restore_path) |
|
|
|
cmp_img = np.concatenate((cropped_face, restored_face), axis=1) |
|
imwrite(cmp_img, os.path.join("_output", 'cmp', f'{basename}_{idx:04d}.png')) |
|
|
|
|
|
if restored_img is not None: |
|
print('encontrou**************') |
|
if args.ext == 'auto': |
|
extension = ext[1:] |
|
else: |
|
extension = args.ext |
|
|
|
if None is not None: |
|
save_restore_path = os.path.join("_output", 'restored_imgs', f'{basename}_{args.suffix}.{extension}') |
|
else: |
|
save_restore_path = os.path.join("_output", 'restored_imgs', f'{basename}.{extension}') |
|
imwrite(restored_img, save_restore_path) |
|
os.system("ls ./_output") |
|
os.system("echo ----") |
|
os.system("ls ./_output/cmp") |
|
os.system("echo ----") |
|
os.system("ls ./_output/restored_imgs") |
|
os.system("echo ----") |
|
|
|
|
|
|
|
|
|
def inference(): |
|
random.randint(0, 9) |
|
input_img = cv2.imread("./_output/cmp/imagem-000"+str(random.randint(1, 4))+"_0000.png" , cv2.IMREAD_COLOR) |
|
input_img= cv2.cvtColor(input_img,cv2.COLOR_BGR2RGB) |
|
st.image(input_img) |
|
|
|
|
|
|
|
|
|
title = "Melhoria de imagens" |
|
|
|
os.system("ls") |
|
description = "Sistema para automação。" |
|
|
|
article = "<p style='text-align: center'><a href='https://huggingface.co/spaces/akhaliq/GFPGAN/' target='_blank'>clone from akhaliq@huggingface with little change</a> | <a href='https://github.com/TencentARC/GFPGAN' target='_blank'>GFPGAN Github Repo</a></p><center><img src='https://visitor-badge.glitch.me/badge?page_id=akhaliq_GFPGAN' alt='visitor badge'></center>" |
|
st.button('Comparacao',on_click=inference) |
|
|
|
|