| from run import process |
| import time |
| import cv2 |
| from PIL import Image |
| import gradio as gr |
|
|
| TESTdevice = "cpu" |
| index = 1 |
|
|
| def mainTest(inputpath, outpath): |
| watermark = deep_nude_process(inputpath) |
| watermark1 = cv2.cvtColor(watermark, cv2.COLOR_BGRA2RGBA) |
| return watermark1 |
|
|
| def deep_nude_process(inputpath): |
| dress = cv2.imread(inputpath) |
| h = dress.shape[0] |
| w = dress.shape[1] |
| dress = cv2.resize(dress, (512, 512), interpolation=cv2.INTER_CUBIC) |
| watermark = process(dress) |
| watermark = cv2.resize(watermark, (w, h), interpolation=cv2.INTER_CUBIC) |
| return watermark |
|
|
| def inference(img): |
| global index |
| if img is None: |
| return None |
| |
| bgra = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) |
| inputpath = f"input_{index}.jpg" |
| cv2.imwrite(inputpath, bgra) |
|
|
| outputpath = f"out_{index}.jpg" |
| index += 1 |
| print(time.strftime("START!!!!!!!!! %Y-%m-%d %H:%M:%S", time.localtime())) |
| output = mainTest(inputpath, outputpath) |
| print(time.strftime("Finish!!!!!!!!! %Y-%m-%d %H:%M:%S", time.localtime())) |
| return output |
|
|
| def load_image_from_file(file_path, new_height=None): |
| """ |
| Load an image from a file and optionally resize it while maintaining the aspect ratio. |
| """ |
| try: |
| img = Image.open(file_path) |
| |
| if new_height is not None: |
| aspect_ratio = img.width / img.height |
| new_width = int(new_height * aspect_ratio) |
| img = img.resize((new_width, new_height), Image.LANCZOS) |
| |
| return img |
| except FileNotFoundError: |
| print(f"File not found: {file_path}") |
| return None |
| except Exception as e: |
| print(f"Error loading image from file: {e}") |
| return None |
|
|
| title = "Undress AI" |
| description = "β Input photos of people, similar to the test picture at the bottom, and undress pictures will be produced. You may have to wait 30 seconds for a picture. π Do not upload personal photos π" |
|
|
| |
| examples = [ |
| ["example9.webp"], |
| ["example2.png"], |
| ["example1.png"], |
| ["example5.webp"], |
| ["example6.webp"], |
| ["example8.webp"], |
| ] |
|
|
| |
| css = """ |
| #example_img { |
| max-height: 400px; |
| } |
| """ |
|
|
| |
| with gr.Blocks(css=css, theme=gr.themes.Soft()) as demo: |
| gr.Markdown(f"# {title}") |
| gr.Markdown(description) |
| |
| with gr.Row(): |
| with gr.Column(): |
| image_input = gr.Image(type="numpy", label="Input Image", height=340) |
| process_button = gr.Button("Run", variant="primary") |
| |
| gr.Examples( |
| examples=examples, |
| inputs=image_input, |
| label="Example Images", |
| elem_id="example_img" |
| ) |
| |
| with gr.Column(): |
| image_output = gr.Image(type="numpy", label="Output Image", height=340) |
| |
| |
| process_button.click( |
| fn=inference, |
| inputs=image_input, |
| outputs=image_output |
| ) |
|
|
| |
| if __name__ == "__main__": |
| demo.queue(max_size=10) |
| demo.launch() |