Spaces:
Running
Running
| import gradio as gr | |
| import cv2 | |
| import numpy as np | |
| from ColorTransfer import ImgProcess | |
| def initializeImgProcess(img1 = None, img2 = None): | |
| return ImgProcess(img1, img2) | |
| class GradioInterface: | |
| def __init__(self): | |
| self.imgProcess_obj = None | |
| self.imgProcess_obj = self.getImgProcess_obj() | |
| height = 300 | |
| self.fun_percent = 1.0 | |
| with gr.Blocks() as self.app: | |
| gr.Markdown("<h2 style='text-align: center;'>Image Style Transfer App</h2>") | |
| with gr.Row(): | |
| with gr.Column(scale = 1): | |
| self.img1 = gr.Image(label="Upload First Image", type="pil", height = height) | |
| self.img2 = gr.Image(label="Upload Second Image", type="pil", height = height) | |
| with gr.Column(scale = 1): | |
| self.output_img1 = gr.Image(label="Transformed Image1 - Color Transfer", height = height) | |
| self.output_img2 = gr.Image(label="Transformed Image2 - Histogram Match", height = height) | |
| with gr.Row(): | |
| with gr.Column(scale = 1): | |
| percent_slider = gr.Slider(label="Slide for fun", minimum=0.1, maximum=1.0, step=0.1, value = 1.0) | |
| percent_slider.change(self.updateFunPercent, inputs = percent_slider) | |
| with gr.Column(scale = 1): | |
| transform_button = gr.Button("Transfer Style") | |
| transform_button.click(self._transfer_style, inputs=[self.img1, self.img2], outputs = [self.output_img1, self.output_img2]) | |
| swap_button = gr.Button("Swap Input Images") | |
| swap_button.click(self.__swapInputImages, inputs=[self.img1, self.img2], outputs = [self.img1, self.img2]) | |
| def getImgProcess_obj(self): | |
| if self.imgProcess_obj != None: | |
| return self.imgProcess_obj | |
| else: | |
| return initializeImgProcess() | |
| def _transfer_style(self, img1, img2): | |
| return self.imgProcess_obj.loadAndTransfer(img1, img2, self.fun_percent) | |
| def updateFunPercent(self, val): | |
| self.fun_percent = val | |
| def __swapInputImages(self, img1, img2): | |
| return img2, img1 | |
| def launch_app(self): | |
| self.app.launch(share=True) | |
| if __name__ == "__main__": | |
| print("Starting") | |
| app_obj = GradioInterface() | |
| app_obj.launch_app() |