import cv2
from PIL import Image
import numpy as np 

def show_image(img):
    cv2.imshow("andrzej",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("andrzej.jfif")
'''
def reverse_image(img):
    new_img = []
    for row in range(img.shape[0]):
        new_row =[]
        for col in range(img.shape[1]):
            new_row.append(img[-1-row][col])
        new_img.append(new_row)
    return np.array(new_img)
show_image(reverse_image(Image))

def reverse_image_short(img):
    return img [::-1]
show_image(reverse_image_short(Image))

show_image(cv2.flip(Image,0))

def grey_scale(img):
    for row in range(Image.shape[0]):
        for col in range(Image.shape[1]):
            gray = int(sum(img[row][col])/3)
            img[row][col][0]=gray
            img[row][col][1]=gray
            img[row][col][2]=gray
    return np.array(img)
#show_image(grey_scale(Image))

def sepia(img):
    for row in range(Image.shape[0]):
        for col in range(Image.shape[1]):
            B = img[row][col][0]
            G = img[row][col][1]
            R = img[row][col][2]
            img[row][col][2]=min(255,(0.393*R + 0.769 * G + 0.189 * B))
            img[row][col][1]=min(255,(0.349*R + 0.686 * G + 0.168 * B))
            img[row][col][0]=min(255,(0.272*R + 0.534 * G + 0.131 * B))
    return np.array(img,dtype=np.uint8) 
show_image(sepia(Image))
'''
def change_colors(img,R_scale,G_scale,B_scale):
    for row in range(Image.shape[0]):
       for col in range(Image.shape[1]):
           img[row][col][2]=img[row][col][2]*R_scale
           img[row][col][1]=img[row][col][1]*G_scale
           img[row][col][0]=img[row][col][0]*B_scale
    return np.array(img,dtype=np.uint8)
show_image(change_colors(Image,3,0.25,0.25))

def tresholding(img,treshold):
    for row in range(Image.shape[0]):
       for col in range(Image.shape[1]):
            gray = int(sum(Image[row][col]))/3
            if gray <= treshold:
                img[row][col]=[255,255,255]
            else: 
               img[row][col]=[0,0,0] 
    return np.array(img)
show_image(tresholding(Image,37))
