Colourize / trash /app3.py
dkescape's picture
Rename app3.py to trash/app3.py
e2d95f1 verified
import os
import cv2
import tempfile
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from pathlib import Path
import gradio as gr
import numpy as np
from PIL import Image, ImageEnhance, ImageFilter
# Load the model once at startup for efficiency
img_colorization = pipeline(Tasks.image_colorization, model='iic/cv_ddcolor_image-colorization')
def colorize_image(img_path):
image = cv2.imread(str(img_path))
output = img_colorization(image[..., ::-1])
result = output[OutputKeys.OUTPUT_IMG].astype(np.uint8)
temp_dir = tempfile.mkdtemp()
out_path = os.path.join(temp_dir, 'colorized.png')
cv2.imwrite(out_path, result)
return out_path
def enhance_image(img_path, brightness=1.0, contrast=1.0, edge_enhance=False):
image = Image.open(img_path)
# Adjust brightness
image = ImageEnhance.Brightness(image).enhance(brightness)
# Adjust contrast
image = ImageEnhance.Contrast(image).enhance(contrast)
# Optionally apply edge enhancement
if edge_enhance:
image = image.filter(ImageFilter.EDGE_ENHANCE)
temp_dir = tempfile.mkdtemp()
enhanced_path = os.path.join(temp_dir, 'enhanced.png')
image.save(enhanced_path)
return enhanced_path
def process_image(img_path, brightness, contrast, edge_enhance, output_format):
# Step 1: colorize
colorized_path = colorize_image(img_path)
# Step 2: enhance (brightness / contrast / edge)
enhanced_path = enhance_image(colorized_path, brightness, contrast, edge_enhance)
# Step 3: convert to chosen format
img = Image.open(enhanced_path)
temp_dir = tempfile.mkdtemp()
filename = f'colorized_image.{output_format.lower()}'
output_path = os.path.join(temp_dir, filename)
img.save(output_path, format=output_format.upper())
# Return side-by-side (original, enhanced) plus the single downloadable file
return ([img_path, enhanced_path], output_path)
title = "🌈 Color Restorization Model"
description = "Upload a black & white photo to restore it in color using a deep learning model."
with gr.Blocks(title=title) as demo:
gr.Markdown(f"## {title}")
gr.Markdown(description)
with gr.Row():
with gr.Column():
input_image = gr.Image(type="filepath", label="Upload B&W Image", tool="editor")
brightness_slider = gr.Slider(0.5, 2.0, value=1.0, label="Brightness")
contrast_slider = gr.Slider(0.5, 2.0, value=1.0, label="Contrast")
edge_enhance_checkbox = gr.Checkbox(label="Apply Edge Enhancement")
output_format_dropdown = gr.Dropdown(
choices=["PNG", "JPEG", "TIFF"],
value="PNG",
label="Output Format"
)
submit_btn = gr.Button("Colorize")
with gr.Column():
comparison_gallery = gr.Gallery(
label="Original vs Colorized",
columns=2,
height="auto"
)
download_btn = gr.File(label="Download Colorized Image")
submit_btn.click(
fn=process_image,
inputs=[input_image, brightness_slider, contrast_slider, edge_enhance_checkbox, output_format_dropdown],
outputs=[comparison_gallery, download_btn]
)
demo.launch(enable_queue=True)