import cv2

def show_image(img):
    cv2.imshow("mario", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

def read_image_cv(path):
    img = cv2.imread(path, cv2.IMREAD_COLOR)
    print(img)
    print(img.shape)
    print(type(img))
    show_image(img)
    return img

from PIL import Image

# def read_image_PIL(path):
#     im = Image.open("mario.png")
#     try:
#         print(im)
#     except:
#         print(type(im))
#     im.show()
#     return im


image = read_image_cv("mario.png")
# # read_image_PIL("mario.png")

import numpy as np

# def reverse_image(img):
#     new_img = []
#     for row in range(img.shape[0]):
#         new_row = []
#         for column in range(img.shape[1]):
#             new_row.append(img[-1-row][column])
#         new_img.append(new_row)
#     return np.array(new_img)

# # show_image(reverse_image(image))

# def reverse_image_short(img):
#     img_reverse= img[::-1]
#     return img_reverse
# # show_image(reverse_image_short(image))

# # show_image(cv2.flip(image,0))

# def gray_scale(img):
#     for row in range(img.shape[0]):
#         for column in range(img.shape[1]):
#             gray = int(sum(img[row][column])/3)
#             img[row][column][0] = gray
#             img[row][column][1] = gray
#             img[row][column][2] = gray
#     return np.array(img)
    
# show_image(gray_scale(image))

# show_image(cv2.cvtColor(image, cv2.COLOR_BGR2GRAY))

def change_colors(img, R_scale, G_scale, B_scale):
    for row in range(img.shape[0]):
        for column in range(img.shape[1]):
            img[row][column][2] = img[row][column][2]*R_scale
            img[row][column][1] = img[row][column][1]*G_scale
            img[row][column][0] = img[row][column][0]*B_scale
    return np.array(img, dtype= np.uint8)
show_image(change_colors(image, 5,0,0))