StyleClip_Demo / app.py
QiyuWu's picture
Rename start.py to app.py
213bc99 verified
raw
history blame
3.02 kB
import gradio as gr
import cv2
import numpy as np
from Project.aligned_image.aligned_images import align
from Project.scripts.inference import inference
from Project.notebook.out import out
def final(image, style):
myimg = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
cv2.imwrite('static/img_in/in.jpg', myimg)
align()
inference()
out(style)
result = cv2.imread('static/img_out/inference_results/00000.jpg')
aligned = cv2.imread('static/img_aligned/in_01.png')
return cv2.cvtColor(result, cv2.COLOR_RGB2BGR), cv2.cvtColor(aligned, cv2.COLOR_RGB2BGR)
# 创建 Gradio 接口
style_options = {
"Emotion": {'Angry': 'angry', 'Surprised': 'surprised'},
"Celebrity": {'Beyonce': 'Beyonce', 'Hilary Clinton': 'Hilary_clinton', 'Johnny Depp': 'Jhonny Depp', 'Taylor Swift': 'Taylor Swift', 'Trump': 'trump'},
"Hair Style": {'Afro': 'afro', 'Bowlcut': 'bowlcut', 'Curly Hair': 'curly hair', 'Purple Hair': 'purple hair'}
}
# 定义更新风格选项的函数
def update_styles(style_type):
if not style_type:
return gr.Dropdown(choices=[])
return gr.Dropdown(choices=list(style_options[style_type].keys()))
# 创建 Gradio 界面
with gr.Blocks() as demo:
gr.Markdown("# Image Style Transfer")
gr.Markdown("### This app is based on styleclip. Choose a style type and a style from the dropdowns below.")
with gr.Row():
with gr.Column():
image_input = gr.Image(type="numpy", label="Upload Image")
style_type_dropdown = gr.Dropdown(choices=list(style_options.keys()), label="Style Type")
style_dropdown = gr.Dropdown(choices=["Angry", "Curly Hair", "Taylor Swift"], label="Style")
style_type_dropdown.change(fn=update_styles, inputs=style_type_dropdown, outputs=style_dropdown)
with gr.Row():
clear_button = gr.Button("Clear")
submit_button = gr.Button("Submit")
with gr.Column():
output_image = gr.Image(type="numpy", label="Result Image")
aligned_image = gr.Image(type="numpy", label="Aligned Image")
def on_submit(image, style_type, style):
style_value = style_options[style_type][style]
return final(image, style_value)
def on_clear():
return None, None, None, None, None
clear_button.click(fn=on_clear, inputs=[], outputs=[image_input, style_type_dropdown, style_dropdown, output_image, aligned_image])
submit_button.click(fn=on_submit, inputs=[image_input, style_type_dropdown, style_dropdown], outputs=[output_image, aligned_image])
examples = gr.Examples(
examples=[
["static/img/example1.jpg", "Emotion", "Angry"],
["static/img/example2.jpg", "Celebrity", "Taylor Swift"],
["static/img/example3.jpg", "Hair Style", "Curly Hair"],
],
inputs=[image_input, style_type_dropdown, style_dropdown],
)
# 启动 Gradio 应用
demo.launch()