
import os
from pylab import *
from skimage import io

work_dir="F:/IPT_MP/TD_IPT_MP"
os.chdir(work_dir)


## question 1) 

def Liste_Par_Initiale() :
        
    alphabet="abcdefghijklmnopqrstuvwxyz"
    for lettre in alphabet :
        L=[fichier for fichier in os.listdir() if fichier[0].lower()==lettre]
        if L!= [] :
            print("Voici la liste des fichiers commençant par la lettre ",lettre," ou ", lettre.upper())
            for fichier in L :
                print(fichier)
                
# Liste_Par_Initiale()

## question 2)

def Visualisation(N_ou_B=False) :
    if N_ou_B :
        image=imread('TD_traitement_image.png')[:,:,0]
        message="Image en Noir et Blanc"
    else :
        image=imread('TD_traitement_image.png')
        message="Image en couleurs"
    dx,dy=image.shape[0:2]
    figure()
    io.imshow(image)
    #axis('off')
    title(message+"/ largeur : "+str(dy)+" pixels et hauteur : "+str(dx)+" pixels")
    show()
    
# Visualisation()   
# Visualisation(N_ou_B=True)  

## question 3)

def Floutage(k) :
    current_dir=os.getcwd()
    image=imread('TD_traitement_image.png')
    if not("Images_Floutees" in os.listdir()) :
        os.makedirs("Images_Floutees")
    local_dir=os.chdir(work_dir+"/Images_Floutees")
    
    def F_flou(tableau,a,b,k) :
        S=0
        for x in range(a-k,a+k+1) :
            for y in range(b-k,b+k+1) :
                S+=tableau[x,y]
        return S/((2*k+1)**2)
    for a in range(85,119) :
        for b in range(23,235) :
            image[a,b]=F_flou(image,a,b,k)
    figure()
    io.imshow(image)
    axis('off')
    title("Image floutée par moyenne sur "+str((2*k+1)**2)+" cases adjacentes")
    
    savefig("Floutage"+str(k)+".png")
    show()
    os.chdir(current_dir)


for k in range(7) :
    Floutage(k)

# on arrive à lire pour Floutage(2) et le floutage est vraiment efficace pour Floutage(3)

## question 4) 

def Rotation(theta) :
    """ theta en degrés"""
    theta_rad=(np.pi)/180*theta
    current_dir=os.getcwd()
    image=imread('TD_traitement_image.png')
    if not("Images_Rotation" in os.listdir()) :
        os.makedirs("Images_Rotation")
    local_dir=os.chdir(work_dir+"/Images_Rotation")
    image_modifiee=image.copy()
    for a in range(89,106) :
        for b in range(217,234) :
            if (a-97)**2+(b-225)**2<=64 :
                image_modifiee[a,b]=image[(97+(a-97)*cos(theta_rad)+(b-225)*sin(theta_rad))//1,(225-(a-97)*sin(theta_rad)+(b-225)*cos(theta_rad))//1]
    figure()
    io.imshow(image_modifiee)
    axis('off')
    title("Rotation de la flèche d'un angle égale à "+str(round(theta/180,3))+" $\pi$ radians")
    savefig("Rotation"+str(theta)+".png")
    show()
    os.chdir(current_dir)

for k in range(8) :
    Rotation(k*45)

    
        

