import cv2
import numpy as np
from PIL import Image

def show_image(img):
    cv2.imshow("image", 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)

image = read_image_cv("obrazek.jpg")


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_BGR2HLS_FULL))

def sepia(img):
    for row in range(img.shape[0]):
        for column in range(img.shape[1]):
            B = img[row][column][0]
            G = img[row][column][1]
            R = img[row][column][2]
            img[row][column][2] = min(255, (0.393*R + 0.769*G + 0.189*B))
            img[row][column][1] = min(255, (0.349*R + 0.686*G + 0.168*B))
            img[row][column][0] = min(255, (0.272*R + 0.534*G + 0.131*B))
    return np.array(img)

# show_image(sepia(image))






