Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmes divers en Python

    21 janvier 2019 à 3:28:37

    Bonsoir,

    Voici en image un travail d'informatique et ce que j'ai fait.

    J'ai surtout des problèmes pour rotation : quand j'utilise le fichier "test" du professeur, cela me dit que le résultat obtenu n'est pas celui attendu, alors que quand je le teste, on a bien une rotation...

    Pour l'exercice 4 aussi, qu'en pensez-vous ? Il y a des soucis dans les fonctions : pourriez-vous m'aider à rendre les fonctions exactes svp ?

    Merci infiniment d'avance, j'espère que vous pourrez m'aider.

    from PIL import Image 
    import numpy as np 
        
    # Fonctions
    ###########
    
    #######
    #Exercice 1
    #######
    
    def image_rouge_gris(image_tab):
        hauteur = len(image_tab)
        longueur = len(image_tab[0])
        nouvelle_image = np.zeros((hauteur,longueur) , dtype=np.uint8)
        for i in range(hauteur):
            for j in range(longueur):
                nouvelle_image[i,j] = image_tab[i,j,0]
        return (nouvelle_image)
    
    
    def image_rouge(image_tab):
        image_tab_rouge = image_tab[:, :, 0]
        x, y = np.shape(image_tab_rouge)
        dims_3couleurs = (x, y, 3)
        image_tab_3couleurs = np.zeros(dims_3couleurs, dtype=np.uint8)
        image_tab_3couleurs[:, :, 0] = image_tab_rouge
        return image_tab_3couleurs
    
    
    #######
    #Exercice 2
    #######
    
    
    def rotation(image_tab):
        x, y, c = np.shape(image_tab)
        image_tab_90degres = np.zeros((y, x, c), dtype=np.uint8)
        for i in range(x):
            for j in range(y):
                image_tab_90degres[j, i, :] = image_tab[i, j, :]
        return image_tab_90degres
    
    
    #######
    #Exercice 3
    #######
    
    
    def agrandissement(image_tab):
        x, y, c = np.shape(image_tab)
        image_tab_2fois = np.zeros((2*x, 2*y, c), dtype=np.uint8)
        for i in range(x):
            for j in range(y):
                image_tab_2fois[2*i, 2*j, :] = image_tab[i, j, :]
                image_tab_2fois[2*i, 2*j+1, :] = image_tab[i, j, :]
                image_tab_2fois[2*i+1, 2*j, :] = image_tab[i, j, :]
                image_tab_2fois[2*i+1, 2*j+1, :] = image_tab[i, j, :]
        return image_tab_2fois
        
    
    
    def reduction(image_tab):
        x, y, c = np.shape(image_tab)
        image_tab_0_5fois = np.zeros((x//2, y//2, c), dtype=np.uint8)
        for i in range(x//2):
            for j in range(y//2):
                image_tab_0_5fois[i, j, :] = (
                      image_tab[2*i, 2*j, :]
                    + image_tab[2*i+1, 2*j, :]
                    + image_tab[2*i, 2*j+1, :]
                    + image_tab[2*i+1, 2*j+1, :]
                ) // 4
        return image_tab_0_5fois
    
    
        
    #######
    #Exercice 4
    #######
    
    # Question 1 :
    
    def contour(image_loc):
        image_loc2 = image_loc.copy()
        hauteur = len(image_loc2)
        longueur = len(image_loc2[0])
        for i in range (1,hauteur-1):
            for j in range (1,longueur-1):
                somme = 0
                for i2 in xrange(3):
                    for j2 in xrange(3):
                        somme += image_loc2[i-1+i2 ,j-1+j2]
                tmp =  8 * image_loc2[i,j] - somme
                if tmp>255:
                    tmp=255
                elif tmp<0:
                    tmp=0
                image_loc[i][j] =  tmp 
        return image_loc
        
    
    def niveaux_de_gris (image_tab):
        L = len(image_tab)
        C = len(image_tab[0])
        matimagegrise=np.zeros ((L,C),dtype=np.uint8)
        for i in range (L) :
            for j in range (C) :
                matimagegrise [i,j] = int (image_tab [i,j][0]/3 + image_tab [i,j][1]/3 + image_tab [i,j] [2]/3)
        return image_tab
        
    def contour_couleur(image_tab):
        image_tab_bw = niveaux_de_gris(image_tab)
        cont_image=contour(image_tab_bw)
        return contour(cont_image)
                
    # Question 2 :
    
    def dilatation(image_tab):
        image_tab2 = image_tab.copy()
        hauteur = len(image_tab)
        longueur = len(image_tab[0])
        for i in range(1,hauteur-1):
            for j in range(1,longueur-1):
                a=0
                voisins = [-1]*8
                c=0
                for i2 in range(3):
                    for j2 in range(3):
                        voisins[c] = image_tab2[i-1+i2 ,j-1+j2]
                if any(voisins):
                    image_tab2[i,j]=255
                else :
                    image_tab2[i,j]=0
        return image_tab2
        
    # Question 3 :
    
    def erosion(image_tab):
        image_tab2 = image_tab.copy()
        hauteur = len(image_tab)
        longueur = len(image_tab[0])
        for i in range(1,hauteur-1):
            for j in range(1,longueur-1):
                a=0
                voisins = [-1]*8
                c=0
                for i2 in range(3):
                    for j2 in range(3):
                        voisins[c] = image_tab2[i-1+i2 ,j-1+j2]
                if all(voisins):
                    image_tab2[i,j]=255
                else :
                    image_tab2[i,j]=0
        return image_tab2
        
    # Question 4 :
    
    def fermeture(image_tab):
        return erosion(dilatation(image_tab))
        
    # Question 5 :
    
    def coloriage(image_tab):
        return fermeture(contour_couleur(image_tab))



    • Partager sur Facebook
    • Partager sur Twitter

    Programmes divers en Python

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown