Explorez un monde de connaissances et obtenez des réponses sur Zoofast.fr. Rejoignez notre plateforme de questions-réponses pour obtenir des réponses fiables et complètes à toutes vos questions pressantes.

Bonjour
Je dois faire cette exercice pour mettre l'image en gris mais je connais pas la formule
Merci pour votre aide.​

Bonjour Je Dois Faire Cette Exercice Pour Mettre Limage En Gris Mais Je Connais Pas La FormuleMerci Pour Votre Aide class=

Sagot :

Bonjour

Obtenir du gris

Une des choses primordiales à savoir (que j'ai découvert en faisant cet exercice) c'est que les codes RGB qui ont trois fois la même valeur donnent tous une couleur allant du blanc au noir en passant par toutes les nuances de gris.

Rappel:

RGB signifie red (rouge), green (vert) et blue (bleu).

  • RGB(0, 0, 0) donne du noir
  • RGB(255, 255, 255) donne du blanc

Par exemple:

  • RGB(50, 85, 173) donne du bleu ciel
  • RGB(50, 50, 50) donne du gris foncé, puisqu’il y a trois fois la même valeur pour le rouge, vert et bleu.
  • RGB(26, 212, 23) donne du vert foncé
  • RGB(180, 180, 180) donne du gris clair, puisqu’il y a trois fois la même valeur pour le rouge, vert et bleu

Comprendre le code

Dans ce code on utilise le package Pillow avec Python, comme la majorité des bibliothèques, on a une documentation exhaustive accessible via le lien: https://pillow.readthedocs.io/

Ca pourra t’être utile à l’avenir :)

On commence par voir si le fichier existe et si on peut l’ouvrir, c’est la partie “try: [...] except [...]”, mais bon jusque là on a rien à toucher donc passons.

▌ nb_colonne, nb_ligne = image.size

Si on se réfère à la documentation, on apprend que image.size accepte 2 arguments, c'est-à-dire deux informations: la longueur et la largeur (en pixel).

Donc image.resize renverra deux valeurs, cette ligne permet de dire que la première valeur sera assignée à nb_colonne et la seconde à nb_ligne.

▌ nouvelle_image = Image.new(image.mode, image.size)

On crée une nouvelle image vierge qui a le même mode et les mêmes dimensions que l’originale.

▌ for y in range (nb_ligne):

▌     for x in range (nb_colonne)

Ces deux lignes permettent de passer sur chaque pixel individuellement, en passant sur chaque colonne de chaque ligne.

▌         rouge, vert, bleu = image.getpixel((x,y))

C’est exactement le même principe que pour image.size,

image.getpixel() va renvoyer les trois couleurs RGB correspondant aux pixel désigné par les coordonnées x et y.

▌     moyenne = ?

Comme on l’a vu au tout début, pour obtenir du gris il suffit d’avoir la même valeur pour le R, G et B.

Le nom explicite de la variable laisse comprendre qu’on doit faire la moyenne des trois couleurs, rien de bien compliqué c’est une moyenne arithmétique, càd qu’on divise la somme totale par l’effectif total.

▌     moyenne = (rouge + vert + bleu)/3

▌     nouvelle_image.putpixel((x,y), (?, ?, ?))

Une fois qu’on a obtenu la moyenne, pour avoir le gris il faut plus que mettre la même valeur pour les trois entrées du code RGB.

▌     nouvelle_image.putpixel((x,y), (moyenne, moyenne, moyenne))

Puis plus qu’à afficher le résultat final

▌ nouvelle_image.show()

Code final

Je te mets le code final et un aperçu de ce que j’ai obtenu en l’utilisant.

Si tu as mal compris quelque chose n'hésite pas à me demander en commentaire

Bonne journée

View image ClementCg
View image ClementCg
View image ClementCg