Traitement d’image !

cm 2019-05 ICN triangle de Maxwell

On veut finir enfin cette création numérique, à l’aide du document ci-dessous (travaux rendus en première sur MBN, travail terminé ensemble en seconde)


TP : traitement d’image pixel par pixel avec PIL/pillow

On part de cette image, à enregistrer dans le dossier de travail sous ‘Taormine.jpg’.

Taormine

Tester ce code :

import PIL.Image as Image
im = Image.open('taormine.jpg')
print("Image chargée")

largeur,hauteur=im.size
pix = im.load()

#N&B
print("Début du traitement N&B")
for y in range(hauteur):
    for x in range(largeur):
        (r,v,b)=pix[x,y]
        moyenne=(r+v+b)//3
        pix[x,y]=(moyenne,moyenne,moyenne)
im.save('N&B.jpg')
print("Image N&B enregistrée")
print("Fin du traitement N&B")

Convaincu.e ?

Reste à obtenir toutes celles-là ! Et d’autres ?

Le tableau en seconde ICN 2GT9 :

Pour vendredi … 7 juin, dernier cours :’-( , venir avec un « selfie » sur fond vert flash ou une couleur improbable unie.

Le but est de réaliser un « fake selfie » :

 

Après le projet, des projets ! Mais aussi des et de l’information(s)

BRAVO et MERCI ! Notre projet avait de la gueule ! You rock !

smiley_png179

Après le projet, des projets !

  • Zoé & Sarah : casse-briques,
  • Célia & Justine : Mario Raider,
  • Alex & Tom : Bomberman,
  • Gaëtan & Noé : Bataille Navale,
  • Aymane, Cyril & Théophile : ?
  • Mathis & Romain : ?
  • Corentin & Quentin : ?
  • Léa & Zoé : générateur de mandalas
  • Axel : en stand-by en attendant

Cours : codage de l’information (1)

cm 2019-01-11 icn 2gt9 binaire puis étude de la parabole.py_1

Finalisons pour les JPO

Page pour centraliser les infos. Contributions élèves et discussions via les commentaires.

On sera dans le couloir, tests avec la télé vendredi soir, télé stockée sous clé jusqu’au samedi.

En place dans le couloir :

  • la télé, mon ordi portable, et scoop du jour, des manettes qui fonctionnent avec pygame 😀
  • des posters – liste finale à préciser avec la chef de projet :
    • création labyrinthe aléatoire,
    • parcours en largeur,
    • parcours en profondeur,
    • spritesheets et animation ?
  • des élèves, inscriptions ci-dessous via les commentaires.

Le menu comportera un tableau des scores. Voir commentaires.

NSI ? Trois petits jeux pour l’immersion d’élèves de troisième

13h27 : Un topo sur les «trajectoires » paraboliques avec vecteur vitesse initial.

14h : Pendant toute l’après-midi, à l’occasion de l’immersion d’élèves de troisième, les élèves de l’option ICN de première S programment trois petits jeux en dialoguant avec eux, pour donner une idée de ce qu’on peut faire en N.S.I.
cm 2018-11-16 trajectoire 2
cm 2019-01-25 icn 2gt9 pygame balle et saut - alice & valentin

cm 2018-12-12 premier code de sortie automatique par Romain
cm 2016-12-16 pacman

Comprendre (pour tous) la génération aléatoire de labyrinthes

C’était le sujet du topo du jour, dont reste un vague tableau :

cm 2019-02-08 explications génération aléatoire labyrinthe_1

Et on se souvient que pour (pas comme ci-dessus) largeur=9 et hauteur=7, alors largeur//2=4 et hauteur//2=3 et il y a donc 4 \times 3 = 12 cases «intersections de lignes oranges » à vider pour estimer que le labyrinthe est creusé.

111111111
111111111
111111111
111111111
111111111
111111111
111111111

Étape 1 :

On creuse un chemin initial de longueur 6 (par exemple) :

  • en partant d’une case aléatoire parmi les 12 à grignoter, ici ligne 3 (la quatrième) et colonne 7 (la huitième)
  • et en testant les directions « valables » :
    • déplacement horizontal ou vertical de deux cases,
    • rester dans la grille,
    • pas de zéro !
  • et en grignotant donc deux cases, ici :
    • d’abord vers le haut,
    • puis vers la gauche,
    • puis vers le bas,
    • puis vers la gauche,
    • puis vers le bas.

111111111
111110001
111110101
111000101
111011111
111011111
111111111

Étape 2 : tant que « nombre de cases à grignoter > 0 »

  • En partant d’une case aléatoire parmi les cases restant à grignoter
  • et en testant les directions « valables » et en grignotant donc deux cases, ici, je continue à grignoter jusqu’à ce que je tombe sur une case du chemin obtenu après l’étape précédente, avec la condition
while carte[y][x]>0 or not ancienne[y][x]==0:

c’est-à-dire « tant que la case est à grignoter ou qu’elle n’était pas grignotée dans la carte copie après l’étape précédente ».

debut chemin en 5 5
111111111
111110001
111110101
111000101
111010111
111010111
111111111

debut chemin en 1 3
111111111
111110001
111110101
101000101
101010111
100010111
111111111

debut chemin en 1 1
111111111
100000001
111110101
101000101
101010111
100010111
111111111

debut chemin en 7 5
111111111
100000001
111110101
101000101
101010111
100010001
111111111

Bonnes vacances !