## À exécuter une fois pour toutes
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import os
from random import randint

# changement du répertoire de travail. Modifier de façon à indiquer le répertoire où se trouvent les images.
os.chdir('C:/MP/Info')
### ATTENTION : remplacez le chemin ci-dessus par le chemin complet vers le répertoire dans lequel vous avez mis les images. Sous windows, les '/' sont remplacés par des '\\' pour délimiter les répertoires.


## Exemples pour le chargement et l'affichage d'une image

# charge une image sous forme de liste de listes
image = (mpimg.imread('./guepiers.jpg')).tolist()
# affichage des dimensions de l'image
print('w=', len(image[0]),' h=', len(image))
# affichage de l'image
plt.imshow(image)
plt.show()

##

def dim(img:list) -> tuple:
    '''Renvoie le couple (largeur,hauteur) de l'image'''
    pass
    
## conversion en niveau de gris

def niveau_de_gris_pixel(p:list) -> None:
    '''modifie un pixel en niveau de gris'''
    pass

def niveaux_de_gris(img:list) -> None:
    '''convertit une image en niveaux de gris'''
    pass

image = (mpimg.imread('./guepiers.jpg')).tolist()
niveaux_de_gris(image)
plt.imshow(image)
plt.show()

## deux outils de sélection

def sq_distance_couleurs(c1, c2):
    '''renvoie la distance entre deux couleurs'''
    pass
    
def selection_couleur(img, i, j, seuil):
    '''sélection des pixels d'une image par seuil'''
    pass
                
image = (mpimg.imread('./guepiers.jpg')).tolist()
selection_couleur(image, 50, 50, 30)
plt.imshow(image)
plt.show()

##



def voisins(i, j, h, w):
    '''renvoie les quatre pixels voisins de (i,j) dans une image de dimensions (h,w)'''
    pass

def baguette_magique(img, i, j, seuil):
    '''sélection par baguette magique à partir de (i,j)'''
    pass
    
image = (mpimg.imread('./guepiers.jpg')).tolist()
baguette_magique(image, 50, 50, 30)
plt.imshow(image)
plt.show()

##

def plus_proche(c, palette):
    '''indice d'une plus proche couleur'''
    pass
    
def image_plus_proches(img, palette):
    pass
    
image = (mpimg.imread('./guepiers.jpg')).tolist()
nb = image_plus_proches(image, [[0,0,0],[255,255,255]])
plt.imshow(nb, cmap='gray')
plt.show()

##

def rand_couleurs(k):
    '''renvoie une liste de k couleurs aléatoires'''
    pass

def moyennes(img, etiquette, k):
    '''calcule les moyennes des couleurs étiquette par étiquette'''
    (w, h) = dim(img)
    pass

##

def energie(img, etiquettes, palette):
    '''calcule l'énergie d'un étiquetage'''
    pass
    
def kmoyennes(img, k):
    '''applique l'algorithme des k-moyennes à img'''
    pass
    
image = (mpimg.imread('./guepiers.jpg')).tolist()
et,palette = kmoyennes(image, 5)
plt.imshow(et, cmap='gray')
plt.show()
    
    
##

def aplat(etiquettes, palette):
    '''filtre pour effet d'à-plat'''
    pass

image = (mpimg.imread('guepiers.jpg')).tolist()
et,palette = kmoyennes(image, 8)
imageaplat = aplat(et, palette)
plt.imshow(imageaplat, cmap='gray')
plt.show()
    
plt.imshow([palette])
plt.show()
