Rejoignez la communauté Zoofast.fr et obtenez les réponses dont vous avez besoin. Obtenez des réponses rapides et précises à vos questions grâce à notre communauté d'experts toujours prêts à vous aider.

Bonjour j'ai avancé dans mon devoir de SNT mais ne parvient pas à mettre mon image en niveau de gris et ect..., en effet, j'ai une fiche explicative très succincte que je ne comprend guère plus... Auriez-vous l'amabilité de m'aider ? Voici l'énoncé et la fiche en fichier joint :
En utilisant le fichier aide_algo_photos.png, qui indique de manière très succincte les différentes manipulations permettant de modifier les couleurs d’un pixel, a vous de créer les images suivantes :

Image en nuance de gris :


Image en négatif :

Modification de l’image : apparition d’une diagonale :

(les images sont également ci-jointes)
Merci de votre patience ainsi que de votre gentillesse :)

Bonjour Jai Avancé Dans Mon Devoir De SNT Mais Ne Parvient Pas À Mettre Mon Image En Niveau De Gris Et Ect En Effet Jai Une Fiche Explicative Très Succincte Que class=
Bonjour Jai Avancé Dans Mon Devoir De SNT Mais Ne Parvient Pas À Mettre Mon Image En Niveau De Gris Et Ect En Effet Jai Une Fiche Explicative Très Succincte Que class=
Bonjour Jai Avancé Dans Mon Devoir De SNT Mais Ne Parvient Pas À Mettre Mon Image En Niveau De Gris Et Ect En Effet Jai Une Fiche Explicative Très Succincte Que class=
Bonjour Jai Avancé Dans Mon Devoir De SNT Mais Ne Parvient Pas À Mettre Mon Image En Niveau De Gris Et Ect En Effet Jai Une Fiche Explicative Très Succincte Que class=

Sagot :

Bonjour,

Tu as mes essais sur une image de Fumseck ci-joint.

Modules utiles:

from PIL import Image

import numpy as np #Disponible sur Spyder, Jupyter (il me semble), EduPython peut-être mais pas directement sur l'IDLE de Python.

Image colorée:

image = np.array(Image.open("image.png")) #On récupère l'image sous forme de tableau Numpy.

nb_l, nb_c = image.shape[0], image.shape[1]

for i in range(nb_l): #Parcours des lignes.

   for j in range(nb_c): #Parcours des colonnes.

       r, g, b = image[i, j] #On récupère les informations liées au pixel.

       image[i, j] = (g, b, r)

Image.fromarray(image).save("coloree.png")

Image en nuance de gris:

image = np.array(Image.open("image.png"))

nb_l, nb_c = image.shape[0], image.shape[1]

for i in range(nb_l): #Parcours des lignes.

   for j in range(nb_c): #Parcours des colonnes.

       r, g, b = image[i, j] #On récupère les informations liées au pixel.

       g = int(0.11*r + 0.83*g + 0.06*b) #On forme le gris.

       image[i, j] = (g, g, g)

Image.fromarray(image).save("gris.png")

Image en négatif:

image = np.array(Image.open("image.png"))

Image.fromarray(255 - image).save("negatif.png") #Là on voit l'avantage des tableaux Numpy, si tu n'as pas le droit à Numpy, il va falloir parcourir la double liste comme j'ai fait sur les deux exemples précédents.

Image avec la diagonale:

C'est trop mathématiques, je te laisse le plaisir de regarder sur le net l'algorithme de Bresenham qui permet d'avoir la diagonale et donc surtout les coordonnées des points au-dessus ou en-dessous de celle-ci.

Après faut passer en nuance de gris le fond en épargnant la pomme, pour ça tu peux réutiliser g = int(0.11*r + 0.83*g + 0.06*b) avec comme condition que r, g, b forment bien du bleu donc que b est élevé et que r, g soient faibles.

Globalement, il faut une question du type:

if r < 200 and g < 200 and b > 200: #A ajuster s'il des pixels persistent, tu peux utiliser paint pour connaître le codage RGB des pixels.

Bonne journée.

View image Thomas756
View image Thomas756
View image Thomas756
View image Thomas756
Nous apprécions votre participation active dans ce forum. Continuez à explorer, poser des questions et partager vos connaissances avec la communauté. Ensemble, nous trouvons les meilleures solutions. Pour des réponses claires et rapides, choisissez Zoofast.fr. Merci et revenez souvent pour des mises à jour.