BilalSardar's picture
Update app.py
dc49736
import numpy as np
import cv2
import os
import gradio as gr
def get_mean_and_std(x):
x_mean, x_std = cv2.meanStdDev(x)
x_mean = np.hstack(np.around(x_mean,2))
x_std = np.hstack(np.around(x_std,2))
return x_mean, x_std
def ApplyChange(image1,image2):
#template_img = cv2.imread(image1)
template_img = cv2.cvtColor(image1,cv2.COLOR_BGR2LAB)
template_mean, template_std = get_mean_and_std(template_img)
# for img in (input_image_list):
# print(img)
#input_img = cv2.imread(input_dir+img)
#input_img = cv2.imread(image2)
input_img = cv2.cvtColor(image2,cv2.COLOR_BGR2LAB)
img_mean, img_std = get_mean_and_std(input_img)
height, width, channel = input_img.shape
for i in range(0,height):
for j in range(0,width):
for k in range(0,channel):
x = input_img[i,j,k]
x = ((x-img_mean[k])*(template_std[k]/img_std[k]))+template_mean[k]
x = round(x)
# boundary check
x = 0 if x<0 else x
x = 255 if x>255 else x
input_img[i,j,k] = x
input_img= cv2.cvtColor(input_img,cv2.COLOR_LAB2BGR)
return input_img
iface = gr.Interface(fn=ApplyChange,
inputs=[gr.inputs.Image(label="Image to Transfer Color", type="numpy"),gr.inputs.Image(label="Image to Tranfer Color on", type="numpy")],
outputs="image",
examples=[["cherry-blossom.jpg","road.jpg"]],
title="Reinhard Color Transformation")
iface.launch(debug=True)