Voici la fonction "test" qui permet de tester le DM si besoin...
Version imprimable
Voici la fonction "test" qui permet de tester le DM si besoin...
Oui, mais je ne vais pas faire le devoir à ta place. Pour toi aussi, il est temps d'aller se coucher !
Un dernier point et je te quitte : n'est-il pas précisé dans l'énoncé qu'il faut d'abord convertir l'image en noir et blanc avant de dilater ou d'éroder ?
Sur ce, bonne nuit !
Merci pour la réponse.
Effectivement il faut convertir l'image en noir et blanc avant d'utiliser erosion et dilatation, mais c'est ce que je fais en écrivant image_tab3=niveaux_de_gris(image_tab) au début des 2 programmes, non ?
Pourriez-vous me mettre sur la piste de ce que je dois modifier pour ne plus avoir l'erreur s'il vous plaît ?
J'ai déjà fait tout le reste tout seul, et tant qu'il y a encore des erreurs je n'ai pas le droit de le rendre, mais je dois le rendre avant ce soir...
Merci beaucoup.
Une conversion en niveaux de gris donne des valeurs de pixel compris entre 0 et 255.
Une conversion en noir et blanc donne des valeurs à 0 ou bien à 255.
On pourrait écrire un truc comme ça :
Pour la dilatation et l'érosion, désolé mais je n'ai pas le temps aujourd'hui.Code:
1
2
3
4
5
6
7
8
9
10
11 def noir_et_blanc (image): hauteur,largeur,profondeur = image.shape new_image=np.zeros((largeur,hauteur,profondeur),dtype=np.uint8) for i in range (hauteur) : for j in range (largeur) : if int(image[i,j][0]/3+image[i,j][1]/3+image[i,j][2]/3) >=128: new_image[i,j] = 255 else: new_image[i,j]=0 # pb de dépassement de uint8 si division après la somme return new_image
Je ne comprends pas pourquoi tu mets les pixels à -1 ni pourquoi tu as 8 valeurs : il devrait y en avoir 9 en comptant la cellule elle-même, non ?
Un peu de temps.
Pour la dilatation, tu peux créer une liste vide "voisins" puis parcourir comme tu le fais les voisins et ajouter le premier canal (ils sont tous égaux dans un même pixel). Ensuite mettre le centre donc voisins[4] à 255 et enfin mettre le nouveau pixel à 0 si il y a un 0 dans les voisins (0 in voisins), 255 sinon.
Pour l'érosion, même principe mais mettre voisins[4] à 0 et comparer voisins à la liste [0,0,0,0,0,0,0,0,0].
Merci encore pour la réponse.
Le premier canal, c'est le rouge, donc image[i,j][0].
Ma fonction niveaux_de_gris est la suivante :
Elle fonctionne évidemment.Code:
1
2
3
4
5
6
7
8 def niveaux_de_gris (image): hauteur,largeur,profondeur = image.shape new_image=np.zeros((hauteur,largeur,profondeur),dtype=np.uint8) for i in range (hauteur) : for j in range (largeur) : new_image[i,j] = int(image[i,j][0]/3+image[i,j][1]/3+image[i,j][2]/3) # pb de dépassement de uint8 si division après la somme return new_image
Pour le reste, je t'ai expliqué comment je ferais (il y a d'autres possibilités) et de mon côté, je ne suis pas chez moi ce soir. Je ne ferai pas ton devoir, je crois t'avoir déjà bien aiguillée.
Enfin, je trouve cette phrase étrange : "Je dois rendre mon travail ce soir, et il ne faut plus qu'il y ait d'erreur sinon il ne corrige rien..."
C'est donc 0 ou 20 ??? Drôle de prof si c'est le cas.
Bon courage.
[edit] Une erreur entre largeur et hauteur que je viens de modifier.
OK, merci pour la réponse !