énoncé

publicité
Stage Luminy 2015
TP Python
Un défi (semi-)ouvert rapide
Jouons avec le Rubick’s cube
Mercredi 6 mai 2015 – 9H
[email protected] - http://blog.psi945.fr/
Vous arrivez à déterminer les 9 couleurs de cette face ?
Si vous y arrivez sur la version papier noir et blanc, bravo ! Si c’est sur le pdf, c’est probablement plus
simple. Maintenant, on va demander à Python de faire aussi bien.
1
Le cahier des charges
Il s’agit d’écrire un programme (une fonction) prenant en entrée un (nom de) fichier image d’une face
de Rubick’s cube, et déterminant la couleur des neuf faces.
On fournit six images monochromes (mal centrées) pour étalonner les couleurs, et un jeu de six images
d’entraînement. Celles-ci sont bien centrées, au sens où le Rubick’s cube est dans une position fixe.
Un deuxième jeu de six photos (centrées de la même façon) permettra de tester vos programmes.
Évidemment, ce serait encore mieux si votre programme marchait avec un centrage différent des
photos !
2
Un peu de matériel Python
Dans les librairies PIL/Image (disons im) et numpy (disons np), on pourra utiliser :
– im.open, qui prend un nom de fichier et renvoie un objet « image » ;
– np.array, qui (entre autres !) prend un objet image et renvoie la matrice de ses pixels ;
– im.fromarray qui fait le travail inverse (renvoie un objet image à partir d’un tableau de pixels) ;
– la méthode save des objets image qui sauvegarde ladite image dans un fichier (au format spécifié
par le suffixe).
(A priori, on a seulement besoin des deux premières fonctions.) Les images peuvent être réduites par
la méthode thumbnail : mon_image.thumbnail( (L, H) ) ne renvoie rien, mais modifie (les pixels de)
l’image, en respectant le rapport largeur/hauteur de la photo initiale (donc en général, une seule des
deux dimensions demandées est respectée, et l’autre est inférieure à celle demandée).
3
Organisation
Mettez vous par groupes d’entre 1 et 10 personnes, allez dans un coin et brainstormez quelques
minutes avant de toucher le clavier. Ensuite, vous vous débrouillez !
Vous pouvez bien entendu désigner un dictateur bienveillant/leader charismatique...
Téléchargement