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...