A l'aide d'un programme Python, nous allons récupérer la valeur du canal rouge, du canal vert et du canal bleu d'un pixel.
Pour cela, il faut repérer le pixel qui nous intéresse. Chaque pixel a des coordonnées x, y. L'abscisse est x comme en mathématique. L'ordonnée a ses valeur positives vers le bas contrairement à ce que vous connaissé en mathématiques.
Et oui, les mathématiques sont utiles.
Le pixel de coordonnée (0,0) se trouve en haut à gauche de la photo.
Si l'image fait 800 pixels de large et 600 pixels de haut, le pixel ayant pour coordonnées (400,300) sera au milieu de l'image.
Dans un premier temps, nous allons utiliser une photo de pomme qui se situe dans:
votre dossier de classe/votre nom/7 Photo/TP3
from PIL import Image
img = Image.open("pomme.jpg")
r,v,b=img.getpixel((100,250))
print("canal rouge : ",r,"canal vert : ",v,"canal bleu : ",b)
Ce programme vous donne le canal rouge, le canal vert et le canal bleu du pixel de coordonnées (100,250) de l'image "pomme.jpg".
Modifier le programme du "A faire vous-même 1" pour afficher les valeurs des trois canaux RVB du pixel de coordonnées (250,300).
Pensez à faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
pixel2.
Il est possible de modifier les canaux RVB d'un pixel.
Fermer le programme précédent sans fermer spyder.
Copier et coller le programme suivant dans Spyder.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
from PIL import Image
img = Image.open("pomme.jpg")
img.putpixel((250,250),(255,0,0))
img.show()
Regarder attentivement le centre de l'image, vous devriez voir un pixel rouge à la place d'un pixel vert, n'hésitez pas à faire un zoom (touche ctrl+molette).
Voici une analyse ligne par ligne du programme ci-dessus:
Modifier le programme du "A faire vous-même 3" afin de colorier le pixel de coocdonnées (100,250) en bleu.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
point2.
Fermer le programme précédent dans spyder, sans fermer spyder.
Copier et coller le programme suivant dans spyder.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
lecture.
Ce programme n'est pas très intéressant en soi, vous pouvez l'arrêter à tout moment en appuyant sur le carré rouge se trouvant dans spyder à droite dans la console ):
from PIL import Image
img = Image.open("pomme.jpg")
largeur_image=500
hauteur_image=500
for y in range(hauteur_image):
for x in range(largeur_image):
r,v,b=img.getpixel((x,y))
print("rouge : ",r,"vert : ",v,"bleu : ",b)
print("fin")
Quelques commetaires sur ce programme:
Fermer le programme précédent dans spyder, sans fermer spyder.
Copier et coller le programme suivant dans spyder.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
art.
from PIL import ImageQue fait ce programme?
img = Image.open("pomme.jpg")
largeur_image=500
hauteur_image=500
for y in range(hauteur_image):
for x in range(largeur_image):
r,v,b=img.getpixel((x,y))
n_r=v
n_v=b
n_b=r
img.putpixel((x,y),(n_r,n_v,n_b))
img.show()
Modifier le programme précédent pour inverser les canaux bleu et rouge, sans changer le canal vert.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
rouge_bleu
Si vous vous souvenez du TP1 sur l'image numérique, vous vous souvenez que pour avoir du gris, il faut que les trois canaux aient la même valeur. Je vous propose de créer une image en niveau de gris en remplaçant chaque canal par la moyenne des cannaux ((r+v+b)//3) le double slash étant là pour avoir une valeur entière.
Modifier le programme précédent pour obtnir une image en niveau de gris.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
gris.
Je vous propose de ne modifier qu'une partie de la photo en ajoutant des conditions.
Fermer le programme précédent dans spyder, sans fermer spyder.
Copier et coller le programme suivant dans spyder.
Pensez à
faire un enregistrer sous de votre programme dans:
votre dossier de classe/votre nom/7 Photo/TP3
avant de le lancer.
Appelez le :
original.
from PIL import ImageQue fait ce programme?
img = Image.open("pomme.jpg")
largeur_image=500
hauteur_image=500
for y in range(hauteur_image):
for x in range(largeur_image):
r,v,b=img.getpixel((x,y))
if v>100 and y>250:
n_v=0
else :
n_v=255
img.putpixel((x,y),(r,n_v,b))
img.show()
Faites preuve de créativité, faites moi de jolies choses. Toujours au même endroit, vous sauvegarderez votre travail sous les noms art1, art 2,...