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))
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.