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.