Nom :
Pour utiliser/manipuler des images en Python, il faut utiliser une bibliothèque.
Nous utiliserons la bibliothèque: pillow
Si elle n'est pas déjà installée :
#pip install pillow
Pour ceux qui utilise la version(jupyter) de EduPython:
Exécutez cette cellule au préalable afin d'importer le module display pour l'affichage dans le notebook
from IPython.display import display
Le code suivant affiche l'image
L'image est hébergée sur un serveur et est chargée dans ce notebook
Exécutez le
#chargement des bibliothèques
from PIL import Image
import requests
from io import BytesIO
# chargement de la photo se trouvant à l'adresse donnée
url=" http://isn-icn-ljm.pagesperso-orange.fr/photo/median4.jpg"
response = requests.get(url)
img = Image.open(BytesIO(response.content))
#affichage de l'image
display(img)
Dans tout ce TP la variable img contient l'image téléchargée depuis le serveur
Réaliser un filtre médian consiste à partir d'une image en niveau de gris:
Le principe
Voici le programme qui réalise cette transformation:
#on récupère les dimensions
largeur,hauteur=img.size
#traitement
def median(img):
#création d'une image vide
img2=Image.new('RGB',(largeur,hauteur))
for y in range(1,hauteur-1,1):
for x in range(1,largeur-1,1):
liste=[]
r1,v1,b1=img.getpixel((x-1,y-1))
liste.append(r1)# stockage de la valeur dans la liste
r2,v2,b2=img.getpixel((x,y-1))
liste.append(r2)
r3,v3,b3=img.getpixel((x+1,y-1))
liste.append(r3)
r4,v4,b4=img.getpixel((x-1,y))
liste.append(r4)
r5,v5,b5=img.getpixel((x,y))
liste.append(r5)
r6,v6,b6=img.getpixel((x+1,y))
liste.append(r6)
r7,v7,b7=img.getpixel((x-1,y+1))
liste.append(r7)
r8,v8,b8=img.getpixel((x,y+1))
liste.append(r8)
r9,v9,b9=img.getpixel((x+1,y+1))
liste.append(r9)
liste.sort()# tri de la liste
r=liste[4] # récupération de la médiane
img2.putpixel((x,y),(r,r,r))
return(img2)
var=median(median(img))# appel de la fonction median()
display(img,var)
# code