Evaluation

Cliquer ici pour télécharger le dossier des images

Exercice 1

pixels

Ecrire un programme qui permet de transformer l'image ci-dessus en une image en niveaux de gris comme suit :

Image en gris

Une proposition de réponse :

from PIL import Image
imageSource=Image.open( "Images/perroquet.jpg" )
largeur , hauteur=imageSource.size
imageBut=Image.new("RGB" , ( largeur , hauteur ))
for y in range (hauteur) :
    for x in range (largeur) :
        r,v,b=imageSource.getpixel (( x , y ))
        g=(r+v+b)//3
        imageBut.putpixel((x,y),(g,g,g))
imageBut.save("Images/Exercice1.jpg" )
imageBut.show( )

Exercice 2

Modifier ce script pour pouvoir afficher l'image en couleur et celle en gris l'une à côté de l'autre comme la figure ci-dessous.

Image en gris

Une proposition de réponse :

from PIL import Image
imageSource=Image.open( "Images/perroquet.jpg" )
largeur , hauteur=imageSource.size
imageBut=Image.new("RGB" , ( largeur , hauteur ))
for y in range (hauteur) :
    for x in range (largeur) :
        r,v,b=imageSource.getpixel (( x , y ))
        g=(r+v+b)//3
        imageBut.putpixel((x,y),(g,g,g))
fenetre=Image.new("RGB" , ( 2*largeur , hauteur ))
fenetre.paste(imageSource, ((0,0,largeur,hauteur)))
fenetre.paste(imageBut, ((largeur,0,2*largeur,hauteur)))
fenetre.save("Images/Exercice2.jpg" )
fenetre.show( )

Exercice 3

Choisir l'image du perroquet en couleur et l'image du perroquet obtenue en gris dans l'exercice 1, et rédiger un progamme en python qui permet d’afficher les images en couleur et en gris en alternance dans une fenêtre image de dimensions bien choisies (On réduit les dimensions de l'image pour que chaque image soit centrée dans son quart de fond, tout en restant entièrement visible).

Comme suit :

pixels

Une proposition de réponse :

from PIL import Image
couleur=(255,255,255)

im=Image.open( "Images/perroquet.jpg" )
im_0 = Image.open("Images/perroquetGris.jpg")
L,H=im_0.size
fenetre = Image.new("RGB", (L,H), couleur)
#print(L,H)
l,h = L//2,H//2
im_0.thumbnail((l,h))
im.thumbnail((l,h))
#print(l,h)
print(im_0.size)
fenetre.paste(im,(0,0,l,h))
fenetre.paste(im_0,(l,0,2*l,h))
fenetre.paste(im_0,(0,h,l,2*h))
fenetre.paste(im,(l,h,2*l,2*h))
fenetre.save("Images/Exercice3_alterne.jpg", "JPEG")
fenetre.show()

Exercice 4

Rédiger un programme qui permet d’afficher l'image sivante :

pixels

Une proposition de réponse :

from PIL import Image
couleur=(255,255,255)

im=Image.open( "Images/perroquet.jpg" )
im_0 = Image.open("Images/perroquetGris.jpg")
L,H=im_0.size
fenetre = Image.new("RGB", (L,H), couleur)
#print(L,H)
l,h = L//10,H//10
im.thumbnail((l,h))
for k in range(0,11*l,l) :
    for j in range(0,11*h,h) :
        fenetre.paste(im,(k,j,l+k,h+j))
fenetre.save("Images/Exercice4.jpg", "JPEG")
fenetre.show()

Exercice 5

Rédiger un programme qui permet d’afficher l'image suivante :

pixels

Une proposition de réponse :

from PIL import Image
couleur=(255,255,255)

im=Image.open( "Images/perroquet.jpg" )
im_0 = Image.open("Images/perroquetGris.jpg")
L,H=im_0.size
fenetre = Image.new("RGB", (L,H), couleur)
#print(L,H)
l,h = L//10,H//10
im.thumbnail((l,h))
im_0.thumbnail((l,h))
for k in range(0,11*l,l) :
    for j in range(0,11*h,h) :
        if k%(2*l)==0:
            fenetre.paste(im,(k,j,l+k,h+j))
        else :
            fenetre.paste(im_0,(k,j,l+k,h+j))
fenetre.save("Images/Exercice6.jpg", "JPEG")
fenetre.show()

Exercice 6

Rédiger un programme en python donnant les trois canaux de l'image ci-dessous :

pixels

Pour obtenir les images séparées suivantes :

pixels
pixelspixels

Une proposition de réponse :

from PIL import Image
imageSource=Image.open( "Images/CouleursPrimaires.png" )
largeur , hauteur=imageSource.size
imR=Image.new("RGB" , ( largeur , hauteur ))
imV=Image.new("RGB" , ( largeur , hauteur ))
imB=Image.new("RGB" , ( largeur , hauteur ))
fenetre=Image.new("RGB" , (2*largeur , 2*hauteur))
fenetre.show()
for y in range (hauteur) :
    for x in range (largeur) :
        r,v,b = imageSource.getpixel (( x , y ))
        imR.putpixel((x,y),(r,0,0))
        imV.putpixel((x,y),(0,v,0))
        imB.putpixel((x,y),(0,0,b))

fenetre.paste(imageSource, ((0,0,largeur,hauteur)))
fenetre.paste(imR, ((largeur,0,2*largeur,hauteur)))
fenetre.paste(imV, ((0,hauteur,largeur,2*hauteur)))
fenetre.paste(imB, ((largeur,hauteur,2*largeur,2*hauteur)))
fenetre.save("Images/TroisCanaux.png" )
fenetre.show( )