import numpy as np
import cv2
image = cv2.imread('1.jpeg')
b,g,r = cv2.split(image)
b_avg = cv2.mean(b)[0]
g_avg = cv2.mean(g)[0]
r_avg = cv2.mean(r)[0]
avg = (b_avg+g_avg+r_avg)/3
b_k = avg/b_avg
g_k = avg/g_avg
r_k = avg/r_avg
b = (b*b_k).clip(0,255)
g = (g*g_k).clip(0,255)
r = (r*r_k).clip(0,255)
image = cv2.merge([b,g,r]).astype(np.uint8)
cv2.imshow('gray_world',image)
cv2.waitKey(0)