{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.2"},"colab":{"name":"Copie de Tp_traitement_images_2.ipynb","provenance":[{"file_id":"1a2fEiU4A8bTi2YwcZVmnRf8-2K6uZjh9","timestamp":1571579669465}],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"2T_gz2Bab5em","colab_type":"text"},"source":["# Traitement de l'image TP n° 2"]},{"cell_type":"markdown","metadata":{"id":"Rj8R7mvEb5es","colab_type":"text"},"source":["
\n","\n","
\n","Pour utiliser/manipuler des images en Python, il faut utiliser une bibliothèque.\n","\n","Nous utiliserons la bibliothèque: **pillow**\n","\n","Si elle n'est pas déjà installée : "]},{"cell_type":"code","metadata":{"id":"PmKbkHD3b5ey","colab_type":"code","colab":{}},"source":["#pip install pillow"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"jCMSS9r04R50","colab_type":"text"},"source":["**Pour ceux qui utilise la version(jupyter) de EduPython:**\n","\n","Exécutez cette cellule au préalable afin d'importer le module display pour l'affichage dans le notebook"]},{"cell_type":"code","metadata":{"id":"bqmstMvy4WkL","colab_type":"code","colab":{}},"source":["from IPython.display import display"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"8ZYG3reFdSg7","colab_type":"text"},"source":["**Le code suivant affiche l'image**\n","\n","L'image est hébergée sur un serveur et est chargée dans ce notebook\n","\n","**Exécutez le**"]},{"cell_type":"code","metadata":{"id":"ElzTrMpYdUrN","colab_type":"code","colab":{}},"source":["#chargement des bibliothèques \n","from PIL import Image\n","import requests\n","from io import BytesIO\n","# chargement de la photo se trouvant à l'adresse donnée\n","url=\" http://isn-icn-ljm.pagesperso-orange.fr/photo/joconde.png\"\n","response = requests.get(url)\n","img = Image.open(BytesIO(response.content))\n","#affichage de l'image\n","display(img)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"rt7vN4BhdcRD","colab_type":"text"},"source":["**Dans tout ce TP la variable img contient l'image téléchargée depuis le serveur**"]},{"cell_type":"markdown","metadata":{"id":"jtp1hrQYb5e_","colab_type":"text"},"source":["## Mettre une image en niveau de gris\n","\n","Pour mettre une image en niveau de gris, il faut remplacer les composantes rouge, verte et bleue par leur moyenne\n","\n","Donc pour chaque pixel on réalise la transformation suivante:\n","\n","\n","moyenne = ( r+v+b )//3 ( la moyenne doit être un entier )\n","\n","( r , v , b , a) -----> (moyenne , moyenne , moyenne , a)\n","\n","**Complétez le code ci-dessous pour qu'il réalise une mise en niveau de gris** "]},{"cell_type":"code","metadata":{"id":"og2c1oaXb5fC","colab_type":"code","colab":{}},"source":["#on récupère les dimensions\n","largeur,hauteur=img.size\n","#création d'une image vide de mêmes dimensions\n","img2=Image.new('RGB',(largeur,hauteur))\n","\n","# On parcourt l'image avec une double boucle\n","for x in range(largeur):\n"," for y in range(hauteur):\n"," pixel=img.getpixel((x,y))\n"," #chargement des composantes dans des variables\n"," rouge=pixel[0]\n"," vert=pixel[1]\n"," bleu=pixel[2]\n"," alpha=pixel[3]\n"," # calcul de la moyenne à compléter\n"," \n"," # remplissage de la nouvelle image à modifier\n"," img2.putpixel((x,y),(???,???,???,alpha))\n","#affichage des deux images\n","display(img,img2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Js3BTaqUb5fQ","colab_type":"text"},"source":["