{"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_4.ipynb","provenance":[{"file_id":"1zC97-NsxSsH0MKh6NdC1khcemW-dbtyn","timestamp":1571580925042}],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"C71im78thV96","colab_type":"text"},"source":["# Traitement de l'image TP n° 4"]},{"cell_type":"markdown","metadata":{"id":"HpU_tm70hV-C","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":"76vB85fBhV-N","colab_type":"code","colab":{}},"source":["#pip install pillow"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"3Em4sCW541hp","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":"ZbBkO-Es45xh","colab_type":"code","colab":{}},"source":["from IPython.display import display"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"G5bqBqAFhpZH","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":"hmEeYB27hrU3","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":"PP6K7Aufhu6h","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":"BrldDeE2hV-Y","colab_type":"text"},"source":["## Transformations géométriques\n","\n","**Il s'agit de déplacer les pixels de l'image afin d'obtenir une image modifiée par symétrie**\n","\n","Le code suivant réalise une symétrie qui renverse l'image de la Joconde\n","\n","**Le principe est :**\n","\n","* On travaille sur la moitié de l'image en hauteur\n","* Pour chacun de ces pixels\n","* On l'inverse avec son symétrique par rapport à l'axe horizontal de la moitié de l'image : ( x , y ) <--> ( x , 319-y )\n"]},{"cell_type":"code","metadata":{"id":"Eb9RWKG3hV-b","colab_type":"code","colab":{}},"source":["#on récupère les dimensions de l'image\n","largeur,hauteur=img.size\n","#création d'une image vide\n","img2=Image.new('RGB',(largeur,hauteur))\n","\n","\n","#traitement\n","for y in range(0,hauteur//2,1):\n"," for x in range(0,largeur,1):\n"," pixel1=img.getpixel((x,y))\n"," pixel2=img.getpixel((x,319-y))\n"," img2.putpixel((x,y),pixel2)\n"," img2.putpixel((x,319-y),pixel1)\n","display(img2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"g_dkE1JjhV-i","colab_type":"text"},"source":["